Android mascot with pie

Android is the biggest mobile platform in the world, and its Google Play store is filled with countless apps for us to download and use. Behind that market there’s an incredibly immense world of development, with its own way of operating and working differently from other programming environments.

In order to keep a healthy life, Android needs good apps. And to build good apps, you need good developers. You need to prove you platform is worthwhile. That it will provide a safe, easy to work space that can lead developers to receive the benefits they deserve for their hard work.

Android has matured a lot over the years, fixing many problems during that time and improving as a platform in general. However, there are still challenges Android needs to face if it wants to keep the title of most popular mobile OS in the world. Challenges it needs to overcome for developers to feel more at ease. These are some of them:

Fragmentation

The eternal struggle. Fragmentation has been one of the challenges of Android development since basically day zero. The innumerable amount of different models of Android devices, coupled with the different skins and software “optimizations” most companies like to put on their products, has led to problems in the development for both software and hardware.

In a sense, this is a developer’s worst nightmare. Instead of being able to develop a single, streamlined concept for an app, developers instead have to consider dozens of combinations. Brand, display (resolution, size and aspect ratio), processor, and hardware features are some of the factors a good app needs to take into account to better work with a device.

The worst part of it all? It probably doesn’t have a true, definitive solution. The nature of Android is to be available to whoever wants to use it. There’s no avoiding fragmentation that way.

Security

Security and trust have also been a main issue for Android since its early days (and for Google as a whole as well). While many of us thought the problem was solved for a while there, new fractures have appeared.

A multi-year study of Android security updates revealed a gap between software patches manufactures claim to rollout to their products and the ones they actually built. “Your phone’s manufacturer may be lying to you about the security of your Android device. In fact, it appears that almost all of them do,” reported The Verge.

The platform has also faced criticism for its lax take on app permissions, something it has taken steps to fix in recent versions, but which still take a bit of the user’s participation to properly work.

Android Studio

Writing for TechCrunch, Jon Evans published an article explaining everything that’s wrong with Android Studio, the program that’s supposed to make work easier for Android developers. He writes:

“Out of the box, Studio doesn’t auto-import Java classes for me; the setting for doing so is buried deep within its impenetrable labyrinth of menus. Out of the box, Studio doesn’t tell me how to load any of the zillion support libraries I probably need, nor how to get Android’s (still painfully slow) emulator running. The secrets to both of these things are buried, believe it or not, in the “Android” submenu under the ‘Tools’ menu.”

Evans explains that the problem is that Studio wasn’t built from scratch. “It’s based on the long-in-the-tooth IntelliJ IDEA platform, a Java IDE… and, well, you can tell. It feels like fifteen-year-old software, and it’s all too apparent that it was adapted to, rather than built for, Android development.”

Programming language

In an official post, Mindfire Solutions, a software company specialized in Agile methods, outlines yet another problem developers have to face when developing for Android: choosing a programming language.

“At present, a mobile app developer has option to choose for two official programming languages for Android app development — Java and Kotlin,” reads the Medium post. “Java is a mature programming language, whereas Kotlin is a modern programming language. Unlike Java, Kotlin comes with features to simplify Android app development and app code maintenance. Both Android 8.0 Oreo and Android Studio 3.0 support both programming languages by default.”

So Kotlin sounds like the best choice, right? Well, it’s not as easy as that. The truth is many current development tools and frameworks still do not support Kotlin, so many developers still use Java to get the work done because of practical reasons. It’s the same case for when a new standard is set, like a new cable connector, for example. It always takes time to migrate to the new one, since so many people already have the old one. While the future might be better, the transition tends to be a bit of a mess.

Publishing

One might think that after publishing an app, developers’ problems are mostly done. That can’t be farther from the truth. Besides obvious things like maintance and updates, Android, or rather, Google Play, also presents other challenges.

The first one is discovery, which thanks to the millions of available free apps in the store, is a bit of a hard task. Optimizing for Google Play is basically like doing SEO, and when many other publishers employ promotion, it becomes difficult to be seen at all.

Last but not least is copyright and patent issues. “Unlike Apple, Google does not enforce robust quality checking rules when a developer uploads a new Android app to Play Store,” writes Mindfire Solutions. “The lack of quality checking rules makes it easier for developers to launch new Android apps rapidly.”

The downside to that is, of course, the copycat apps appear, and not much is done about it. A quick search through Google Play will quickly prove it to be the case.