Why you should use the captive runtime for your Android apps

For Android apps compiled against Adobe AIR, it is best if you include the entire AIR runtime as part of your distributable .apk file. It may not be as nice from a programing standpoint, but it is far better for the end user. I have three Android apps in the Google Play store (Xploding Boxes, Runaway Trains, and Black Out), at first I relied upon users to download AIR for themselves, but have since realized that bundling the runtime gives a much better experience for Android users.

For developers the idea of having the AIR runtime as a separate installation presents a much prettier (and more loosely coupled) architecture. It allows the app to have a smaller file size, and to share the AIR platform with any other apps that need to make use of it, while also allowing the two installations to be updated individually.

However on Android (unlike the BlackBerry PlayBook and the Barnes and Noble Nook) the AIR framework is not preinstalled on the OS, so if the captive runtime is not used to bundle AIR into your .apk than when users first launch the app they are presented with a screen asking them to go download and instal Adobe AIR. This is just giving your users another chance to quit, and ignore your app, and even resulted in a poor review for one of my apps from a user who did not understand what Adobe AIR was.

Instead if you bundle AIR into your app using the captive runtime you result in a larger distributable file, but when the user goes to launch it for the first time it is guaranteed to just work.