Android is an ever-evolving, ever-expanding platform, with almost yearly releases, users are generally pleased, and often very happy to receive platform updates, new features, enhanced functionalities, etc. but, What does it mean for developers?
Android has been evolving and innovating ever since its release, and it has become the most used mobile system in the world, meaning an app has the potential to reach an incredibly wide audience, this, however, doesn’t come without its share of problems.
If you have dabbled in Android Development, in Android Studio one of the first things you ever do when creating an App is selecting the target sdk and the min sdk, one recommendation you’ll hear is to always target the newest release, and to select as low of an sdk as you can.
This is generally sound advice, so your app can take the most opportunities as it can, but it can also come with problems:
- Let’s talk about the min sdk first, if you pick the absolute minimum sdk Android Studio supports, then, sure, your app will cover every device that can use the play store, but that means giving up certain features, or taking extra work to make sure the app will work exactly the same in every device. A very good example is the JobScheduler, when it was released, it only supported Android v.21 (Lollipop) meaning if you wanted to use it you had to check if the user was using Lollipop, and if it isn’t then you had to make use of the AlarmManager to recreate the functionality. One option would be to have the min sdk as lollipop, but as the newest release it has such a small market share that it was not a good idea. This problem has been solved with new libraries, like the Work Manager or the Firebase Job Dispatcher.
- The target sdk always being the latest, is not always a problem, but it comes with a similar problem whenever a new version releases, if an API changes its functions, like changing the parameters it takes, then when updating to the newest version you have to take care of the new change, and the longer you take, the more the dependencies break.
This is a very common problem developers face, and it’s called fragmentation, meaning the Android market as a whole is divided, the many APIs create a problem, the many different characteristics of the devices make it difficult to make sure an App will work on 100% of the devices, it’s not only the Android versions that cause this problem, the devices themselves can create even more problems, for example, one device may not support bluetooth, and you have no way of knowing until you check the very device.
Even worse, old apps will install properly on newer devices, but then you might find the app freezes and crashes every so often, why? Android changes the functionality of their own libraries very often, and that can make an app find new problems in the environment, that were not present in the original release.
One such example, is quite recent, in Android 8, there were many changes to the background execution limits, meaning many apps could no longer run services in the background, or even work when they don’t have the focus, they had reduced times and limits when transferring data.
Making an Android App is not simply publishing, having a successful app means a long term commitment, even more if you expect to make money out of it, people are more lenient on bugs when the service is free, but as soon as you start charging them, they’ll demand their money’s worth, so be sure to always include maintenance and follow-ups on your releases, keeping up with the newest releases is of utmost importance when being a developer.
Now tell us, What do you think about these realeses from a developer point of view?
Author: Ing. Erwin Gonzalez