Original post first appeared on Medium.com
The Android Fragmentation Nightmare . The biggest issue facing Developers and Users.
As an employee for a software company developing multimedia editing applications for Android and PC, we understand the complexity and hardship involved in developing apps for these platforms. These difficulties are further compounded on Android by the sheer number of devices and O/S versions available.
For instance, our mobile app is only available for devices running Android 4.0+ (Level 14) which narrows down the number of devices to 3397. Compare that to 6 different iPhones devices. Also, a new version of Android is now available to a select few called KitKat 4.4 (Level 19) which again changes the playing field and presents new opportunities and difficulties.
What’s the problem with device fragmentation?
When you think of Android, you may think about one of the big manufacturers or devices like Samsung with their Galaxy range or LG with the Nexus. As these high-end powerful devices are popular in the western world and have a large user base, most developers will generally use them as their testing reference platform.
This is where things get interesting and complicated, as we know first-hand. For example, at times some operations in our video editing app, trakax, will require a significant amount of RAM, as well as access to the CPU. By its very nature, exporting large videos which were probably captured at 1080p will take time and resources to export to 1080p. Just because your application runs and performs smoothly on one device, does not necessarily mean it will do so on another. Incredibly, the app may even act differently on devices developed by the same Manufacturer. One device may have a different configuration of android (4.3 vs 4.4) or the CPU/GPU handles certain operations differently.
I think it is important to note at this stage that not every application is the same. Some apps provide brilliant colourful graphics and great user experience but may not be pushing the boundaries of the devices capabilities. On the other hand some apps, like multimedia and video apps, are breaking the mould and pushing all the resources on devices to the maximum.
This leads me on to my next and most important point. Simply put, users don’t care about the above information. All they know is they have a smartphone running Android and expect every app to work correctly. This becomes more evident if you look at any app (especially media and video apps) on the Play Store and look at the overall rating comments. Even the most popular apps by big developers get plenty of one stars and bad comments (which can feel like a knife through your heart sometimes). Users who download your free app simply do not understand or really care about the time, effort and cost that went into developing the application. They just expect it to work and work well!
But why will the app not always work as expected? This isn’t an easy question to answer as there are many variables at work and I’ve touched on some of the issues above. In some cases, it is simply a bug and can be fixed, in others; users have rooted or added a custom ROM and expect everything to stay the same. In many cases, depending on the nature of the app, the device at times simply cannot handle the work load. Many new games and multimedia apps require a lot of RAM. Yes, your device is running 4.2 or 4.3 jelly bean, but the device only has 512mb of RAM and probably has Facebook and a load of other apps running in the background. Before you know it ‘BANG’, the app crashes or stalls, all hell breaks loose and “Hey app developer, your app doesn’t work, One Star!”.
This type of scenario is more common than not. We now have big retail outlets selling white label devices, at very affordable prices, running Android 4.0+ but the devices themselves have very limited resources available. I recently heard a good analogy which may put this into context “Just because a car runs on petrol, does not make every car the same” and when it comes to Android, not every car is running the same petrol.
I am certainly not blaming the users, why would I, they aren’t to know what your app can and can’t do or the specs of their device. And I know, from personal experience, most developers are trying their utmost to create the best app they can. One thing is for certain, mobile development is difficult and here lies the problem with there being so many devices and O/S versions available. Yes, as a developer, we can define what version of Android our app supports, but unfortunately, we cannot easily define or limit our apps availability based on device capabilities, as it would be a nightmare to manage the process.
As Android continues to grow and new devices continually arriving in the marketplace, the headaches for developers and users alike will continue to proliferate.