In the office¬†we’re working on an Android app which isn’t your usual app: it has Android system permissions and because of that we work with a handset OEM to get it pre-loaded on their handsets in the system partition.

The slow rate of ROM OTA updates from OEMs being what they are, we wanted a faster way to deploy updates to our app, so the obvious choice is to also publish our app into the Play store and let Android’s Play services automatically update it from there. Except for one problem: when we published APK updates to the Play store, the handsets would never automatically download the update and install it. Try as we might to debug that, we couldn’t figure out why our app wasn’t getting updated by Play Services like all the other apps. We even got Google to investigate a bit, but never got a solution. So we ended up building a service into our app that would monitor for an updated version being available (via separate metadata that we uploaded to a server) that would then notify the user of the update being available, and then expecting the user to manually click on that to download the update. Yuck.

Fast forward a while, and we rewrite our app so it no longer needs Android system permissions. It still is signed by the same key. As soon as we publish the 2nd version without the system permissions to the Play store, we notice that the Play services update is working.

So that leads us to believe that when an Android app has system permissions, Play services won’t update it automatically. I don’t expect many developers are using system permissions, but FYI for those that are.