One of the most difficult aspects of programming for Android devices is supporting the massive number of display sizes, operating system versions, and processors on the market. According to a July 2013 Gizmodo article by Peter Ha, there are nearly 12,000 different Android devices available, running eight versions of the operating system. Compare that with iOS, where a developer can count the number of devices he or she must target without running out of fingers, and you begin to understand the challenge that is unique to Google's smartphone operating system.
Recently, I released a game for Kindle Fire. At the time, I tested the application on a 1st generation Kindle, a 2nd generation Kindle, a Kindle Fire HD 7, and a Kindle Fire HD 8.9. Now, less than a month later, there are three more Kindle Fire devices with very different computing capabilities, two of which also boast increased screen resolution.
Android developers dub this phenomenon as the F word, which stands for fragmentation. Google has made an honest effort to help reign in fragmentation, most recently by packaging OS type functionality into the Google Play app. But if Google takes away the control it has given to the OEM and device manufacturers, the company loses a significant tactical advantage against competing and manufacturer-grown operating systems.
All of this puts a big burden on Android developers, particularly those of us who are working alone or as part of a small team. I cannot overstate the importance of testing your app on actual hardware. The emulators Google provides are great, especially for debugging, but there is no substitute for getting your app on myriad devices before it goes to Google Play.
These are tips I've compiled over the last four years testing my Android apps. Feel free to share your suggestions in the discussion.
1. Own at least two different Android devices.
If you don't have at least two Android development devices, get on eBay and buy one or more devices — it's money well spent. I keep at a minimum a 2.3 device, a 3.1 tablet, and a 4.x device on hand.
2. Enlist your friends and family to help test.
I have a son and six nieces and nephews, and they all have an Android phone or tablet. All of them are more than pleased to try out different versions of my apps in exchange for a testing credit on the About screen that they can show their friends when the app becomes available.
3. Make friends on the Android Developers forums.
You don't have to sit face-to-face with someone to get feedback about how your app performs (or fails to perform) on a particular device, especially if the person testing your app is also an Android developer. I keep in touch with several developers I met online, and we swap APKs so we can test apps on our combined hardware set. It usually only takes a few minutes to determine if an app looks or behaves wonky on a particular device.
4. Visit your neighborhood electronics store.
The sales guys at my local Best Buy know me. They see me frequently at the tablet display, pen and paper in hand, loading an app and testing it on the latest and greatest hardware. One nice thing about Android devices is you can side-load an app pretty much anyplace there is access to the Internet. I recommend spending a few bucks a month to get an FTP site to house your APKs in progress and take advantage of Android's flexible application loading model.
Read more about Android fragmentation on TechRepublic
William J Francis began programming computers at age eleven. Specializing in embedded and mobile platforms, he has more than 20 years of professional software engineering under his belt, including a four year stint in the US Army's Military Intelligence Corps. Throughout his career William has published numerous technical articles, as well as the occasional short story.