Wednesday, November 20, 2013

Gotcha of the Day: Android 4.2.2 refuses to install my custom developed app

Last night I built out an updated version of an app for one of my clients. I deployed it to a location where she could install it, and she did so without issue. We're using Push-Link to manage installations of the app across multiple tablets (which I love, by the way). A few minutes later, Push-Link correctly detected that my customer had installed a version of the app which wasn't the most recent. Push-Link asked it could upgrade it?

The upgrade process started off just fine, confirming that the new app had no new permissions. However, after clicking Install my client immediately saw the message: "Application not installed."

Huh, what gives?

I tried the exact same procedure on my Galaxy Tab, and it worked just fine. That's when we realized that she was running Android 4.2.2 and I wasn't.

This morning, I upgraded my Galaxy Tab to 4.2.2 and sure enough, the upgrade procedure failed for me like it had for her.

Was this an Adobe AIR issue? A push-link issue? A new-setting-I-needed-to-disable-on-Android-4.2.2 issue?

I triggered the above error with adb logcat running. I saw no useful error messages in there.

My first clue came when I tried overwriting the app with a previous version using adb.exe and received the error: [INSTALL_FAILED_VERSION_DOWNGRADE]

Then it hit me, could Android be refusing to install an older version of the app? In the scenario above I my client installed a newer version of the app (say, version 30) on her device. Push-link then came along and wanted to upgrade it to its latest (say, version 29), which was actually older than what was on the device. In previous versions of Android, this was completely Kosher. From the adb message above, it appeared that was no longer the case.

I manually futzed with my version. I had my client install the latest software with the version hard coded to 20. And then, push-link came along and wanted to upgrade it to 29 and it did so successfully.

In the end, I suppose this all makes sense. It's a tighter security policy, which I can live with. What I don't get, however, is why the Android installer couldn't report this issue? Seems like an easy error message to show (can't install version 28, version 30 is already installed).

No comments:

Post a Comment