Android publishing considerations


So I’m happy enough with the application for now and have started preparing to put it up on the google play store. The basic AndroidManifest.xml config file I’ve been using throughout development was in need of stripping down and tightening up so here’s a little on what I altered before rolling out the app. The developer information provides pretty much all you need to know about the manifest file.

Set your versioning with the android:versionCode and android:versionName attributes of the root manifest element. Also set your package name here with the package attribute. The guidelines are to follow the Java convention of your site backwards with the app name. e.g. com.alk3my.bestbooks in my case. Choose carefully as once you’ve published your application you can’t change this.


Within the root manifest element you’ll find many uses-permission elements. These are the options that allow your application to use various parts of the android api and hardware. It’s also what users will have to agree to so the application has permission to access these things. Best to limit these to only what your application needs. In my case I only left; android.permission.INTERNET, android.permission.WRITE_EXTERNAL_STORAGE and android.permission.ACCESS_NETWORK_STATE. For example, if you don’t need access to the camera and you leave that permission in, then you’ll be excluding devices that don’t have cameras as google will filter based on this.

SDK Version

You will need to add the uses-sdk element inside the manifest element and at the very least set the android:minSdkVersion attribute. This lets google know the sdk version you’re targeting and the minimum version needed. It will also stop you seeing the error “WARNING: Application does not specify an API level requirement!” when running/debugging your app in Eclipse.

Take note though, this isn’t the Android platform version but instead a number that relates to it. For example, version 2.2 (Froyo) is SDK API level 8, while versions 2.3 - 2.3.2 (early Gingerbread) is SDK API level 9. I set my version to 7 (Eclair, 2.1) as it’s enough to run everything in my app and more than 98% of Android devices are this level or higher. Have a look at the platform version information that google has published, it shows a very accurate picture of the distribution of android versions (image below).

[caption id=”attachment_61” align=”alignnone” width=”460”]Chart of android versions Android version distribution (August 1, 2012)[/caption]

Cleaning up

If you’re anything like me, there could be a lot of console.log calls in your code. This is great during development for debugging but not so for publishing. Make sure you remove or at least comment these out. Next make sure you’ve tested well! Send out the APK to some friends and get them testing too. I’m hoping I’ve done enough although I’ve been quite limited in terms of the devices I have access to. Time will tell what bugs show up but I’ll be keeping a close eye and hoping for some good feedback and suggestions.