The popularity of an operating system in a given region is just one of many factors that go into deciding what platform to choose for your mobile app. Ideally, we, of course, want to create apps that give access to all mobile users regardless of their principles, brand loyalty, or even financial situation. But, when it comes to native development, you usually have to start with one.
Join us for a review of Android mobile development and find out what benefits and challenges await you when choosing Google over Apple. Let’s begin.
The Android's HistoryDo you remember the pre-smartphone era? We expect you don’t need a time machine to remember what mobility was like in 2006. Back then, Windows, Symbian, and Blackberry had been slowly supplying the mobile market with so-called pocket personal computers - clunky, unattractive, enabled with a physical QWERTY keyboard and sometimes even a stylus. You might have had one of those. Early smartphones focused strictly on productivity. Consequently, there was one problem that plagued the minds of hardware and software providers: how to fit more into one this tiny device?.
They were doing quite well. We had Twitter and email, Internet browser, Microsoft Word, and many more handy features, but websites were not responsive, mobile Internet was slow, and people still used to sit down at their full-size PCs for a task that took longer than five minutes. Basically, the usability wasn’t considered at all - together with developers’ freedom. This was a restrictive world to operate in.
HTC Dream running in Android 1.6, 2008When the first Android device, T-Mobile G1 (aka HTC Dream), entered the market, the world wasn’t even used to touch screens. But the first consumer Android phone already had Google services integration, built-in GPS, web-page zooming, and an early Android Market (with only 35 apps). Google and Android, Inc. creator Andy Rubin saw the future of mobile devices in software and the Internet - they planned to create and freely distribute services that would connect people to the web and enter the new generation of mobile devices.
Android development starter packNative development for Android devices consists of this basic toolset: an SDK, IDEs, programming languages, libraries, and plugins. Let’s see what products you can use to form your own tech stack.
Software Development Kit. An SDK is a bundle of tools that comprises an executable program. This includes documentation, debuggers, emulators, frameworks, libraries, profilers, and more. Android SDK is already included in Android Studio, but if you want to use another IDE, you can download it separately at the bottom of the linked page.
Editors and IDEs. In theory, you can write Android apps in a regular text editor or command line, but the common approach is using an Integrated Development Environment. This tool integrates all SDK tools and helps to manage them more easily and in a more user-friendly manner. Android Studio is the official Android IDE, but other options are also popular. Eclipse is Studio’s predecessor that can use plugins to expand the code to more languages. IntelliJ IDEA is a paid but highly customizable option.
Programming languages. Java and Kotlin are listed as the official languages for Android programming but there are alternatives. You can also use C and C++ using the Android Native Development Kit - the tool for implementing parts of previously written app in native code. There are also third-party tools allowing you to create native Android apps using your favorite languages such as Ruboto (Ruby) or Kivy (Python). Just remember that any unofficial solutions will lag behind in terms of updates.
Libraries. Software developers use libraries for all kinds of tasks. They are snippets of pre-written code that automate a coder’s job and eliminate the need to reinvent the wheel. The Android community is generous about such free solutions. The most popular of them include GSON for serializing and deserializing Java objects to communicate with APIs, Retrofit for API organization, and EventBus for easy communication between different app elements. To configure all these settings and organize the process of adding external libraries, developers use the tool called Gradle.
Plugins. While libraries are used to automate project tasks, plugins are created for the augmentation of each software tool, an IDE in our case. We can’t possibly list them all, so check out this collection of Android Studio plugins and the curated list of Eclipse plugins on BestPlugins.com.
If you’re looking for more intricate solutions to improve your coding experience, visit this popular article for top 20 tools for Android development.
Pros of Android developmentWhen talking about what Android does well, you can’t avoid the comparison with its partner in duopoly - Apple. Let’s analyze how Android is beneficial to developers and where it beats or ties with iOS.
+ Simple app acceptance processApple App Store is known to be very selective about its published apps. While sharing similar guidelines, Google and Apple have a different approach towards quality assurance. App Store's approval process can be tedious and demanding, but the Google review system favors almost everyone, as long as you don’t violate its main content policies. Apple, however, evaluates apps more stringently - there are bugs, crashes, UI inconsistencies, and broken links the system will not accept your app. Same goes for rather subjective criteria - no lasting value - where your niche or content-weak app will be judged by the usefulness.
While meticulous reviews are not inherently bad, they mean that developers must first spend thousands of dollars with a risk of being denied by the platform. Google’s openness to new content allows you to release a minimum viable product or an early version of your app to gather feedback or give your Kickstarter audience a sneak peek.
+ Hardware independenceAmong the things required to develop Android apps, hardware will be your least concern. Android development is conducted on Java which makes the process cross-platform. Android Studio, Eclipse, IntelliJ IDEA, Fabric, and many more Android development tools can be used and downloaded on Windows, Mac OS, and Linux. Building iOS apps require using a Mac or a virtual machine.
+ Java and Kotlin as programming languagesAndroid has two officially supported programming languages - Java and Kotlin. The first has been the beloved language for two decades already and named 5th most popular technology in 2018. Java is an object-oriented, cross-platform language that’s used everywhere from fintech startups to data analytics initiatives. Web, desktop, mobile, IoT products - all can be powered by Java, which pros and cons we’ve recently explored in a separate blog post. Java’s popularity will allow you to easily find skilled Android developers on the market or even within your tech team.
As for Kotlin, it’s another highly-praised technology. It’s not exactly a language per se, but more like a new coding approach based on Java. It takes all the complexity and verbosity from Java and makes the whole app writing process faster and more enjoyable. Any Java developer can master Kotlin in no time, but it’s not necessary unless you have a little extra time to invest in migrating to a new process. Another good thing is that Jotlin and Kava (see what we did here?) are completely interoperable and can be freely used at the same time.
This presentation at Google I/O 2017 gives a good idea of the direction Android is taking with its new programming approach.
+ Learning resourcesIf you ever had to deal with Google documentation of any kind, you know what level we’re talking about. Apart from the massive amount of information on the web, Google offers its own Android dev training for beginners, experienced engineers, and even special cases that require deeper knowledge. Materials are well-structured, enabled with graphics, animations, and explainer videos, along with some interactive exercises.
As of now, the training includes three streams: Android dev fundamentals, Kotlin boot camp, and native apps with Flutter.
Besides, programmers can receive official Google Developers Certification. The one-time exam costs $149, takes 8 hours to finish, and tests a person’s practical knowledge based on self-study materials provided by Google.
+ FlutterFlutter is Google’s new free SDK that allows you to write native applications for Android and iOS using the single codebase. Although cross-platform tools have been popular on the market for some time, Google offers its own take on the growing demand for the write-once-run-anywhere programming style.
Flutter iOS and Android StructureAlthough not without some drawbacks, as we proved in this Xamarin vs Flutter comparison, Flutter offers a few interesting features that make Android development easier and smoother. For instance, the tool has a built-in Material Design library that eliminates the need to write UI code when you simply want to achieve the standard Google look and feel. It’s also completely integrated with Android Studio and IntelliJ, which allows you to keep working with the tools you already know and love. And you can also use the existing Java code, so your native applications can be easily transported into the Flutter environment.
While there are many cross-platform tools out there, Android developers should take a closer look at Flutter and consider what it may bring to the table.
+ Instant AppsThe 2017 Android developer conference was rife with innovations. Besides Kotlin, Google introduced Instant Apps - native applications that can be launched directly from Google Play without downloading. Similar to progressive web apps, these are faster, easily available, and engaging applications that can give access to the limited functionality of the full service or give users a preview of the paid app.
How Instant Apps appear to users Source: Android DevelopersWhat’s so good about Instant Apps?
- They’re the positive answer to “app fatigue”
- They increase engagement and don’t cost users anything
- They’re easily shareable and can be launched via a link
- They provide another entry point for users
+ More than mobile app solutionsIf you’ve read our intro to VR development, you may remember that building virtual apps is not always an ordeal. Google, the crown prince of mobile VR, already has two headsets - the cheap Cardboard and the serious Daydream, and, in a truly ecosystem manner, you can develop apps for these devices using the same Android Studio and Android SDK. The only addition would be Google VR SDK, but considering tech stacks for other devices, this is certainly the most approachable one for the experienced Android programmer.
The publishing platform for VR apps is also the same - you can upload the release-ready APK to Google Play or make it discoverable on the Daydream app.
Daydream VR interfaceAnd Android development doesn’t stop there. The technology allows you to use the same toolset to build applications for a variety of products. This ecosystem includes:
Android TV. This is the Android version that serves as an entertainment platform built into many TVs and streaming video devices. Apart from functioning as any other smart TV with integrated YouTube and Netflix, Android TV also has a built-in Google Assistant, curated video content, Google Play apps, voice search and more. By developing apps for big TV screens, you not only can provide another platform for your users to interact with your product but also extend the service’s functionality.
Wear OS. Wearable Android apps developed using the same Android SDK run on smartwatches from Asus, Huawei, LG, Samsung, Sony, and more. With knowledge in developing mobile Android apps, programmers can build wearable software and watch faces - dynamic screens that include animations and contextual information like smartphone widgets.
Android Auto. This marriage of classic GPS navigators and Google services allows developers to access users’ cars via specific APIs - in a form of a user interface on the dash console. Currently, the service supports only audio and messaging apps but it’s expected that soon the platform will pave a way for more connectivity with access to a vehicle’s sensors and data.
Android Things. This platform allows engineers to create applications for low-power Internet-of-Things devices such as cameras or smart speakers. Such providers as JBL, Lenovo, and LG have developed their products using the Things system.
Chrome OS devices. Any Android app can be optimized for use on Chromebooks, the first and only devices operating on Chrome OS. Although the overall logic and the interfaces are the same, some aspects such as resizable and free-form app windows need to be rewritten. You can also customize your apps to make sure the content looks organic on a bigger screen and also change the interface orientation.
Cons of Android developmentYou’ll soon see that the main challenges with Android development come down to a few of its characteristics that can also be considered advantages. Let’s see what they are.
- Android users spending habitsNumerous research will tell you that Apple users spend way more on their apps than Android enthusiasts. Statista claims that App Store takes more than 60 percent of all mobile spendings while Google Play lags behind with a little over 30 percent.
The staggering difference between app downloads and consumer app spend Source: StatistaNot only does it concern app downloads, but also in-app purchases. The reasons for that may be one or several of the following:
- The overpowering number of Google Play apps leads to a long list of alternatives for paid or freemium programs. Users simply can find more free apps similar to the paid ones
- Android and iOS share different demographics. Most Apple fans are located in North America, Australia, and Northern Europe, while Android is popular in lower-income countries
- During its long acceptance process, Apple weeds out the apps with the poor user experience. Therefore, more quality apps reach App Store top charts inducing users to pay up
- Many Android apps can be prone to bugs due to the big number of devices and active users of older operating systems on the market. Developers have to spend more time to thoroughly test apps on all models, which is often impossible. We will talk about it further.
And since we’re talking about competitors, Google Play is not the only store distributing Android apps. Amazon App Store allows you to share the same apps for Kindle Fire Tablet and Fire TV and the platform currently has about 400k available apps. Also, there’s the Samsung Galaxy Apps shop that offers special discounts for Galaxy smartphone owners. If you’re planning to cover the full mobile market, it makes sense to research distribution on these and other platforms.
- Security issuesAlthough Android’s open-source nature is a blessing for developers, it can also be a curse. While malware and hacks target millions of Android users almost weekly, Google quickly releases security patches. Unfortunately, most people fail to update their phones regularly. This means that app developers often have to take care of user data themselves by conducting complex encryption, including additional security features, or avoiding personal data input altogether.
- OS adoption fragmentationTesting for Android is a big, fat con. The range of operating systems is large and one of the challenges related to app customization. According to Google’s own 2018 report, most Android devices are still running on Lollipop, Marshmallow, and Nougat - operating systems from 2014, 2015, and 2016 respectively.
Most popular Android OS versionsAnother differentiation problem comes from various OEMs (original equipment manufacturers) that create their own “skins” making devices running on the same Android version look so different. Not only does it present another update-staggering layer, but also leads to changes in functionality that may affect how your app works on all smartphones. Sony and Samsung are the biggest offenders known to create complications for programmers.
- Device fragmentationThe number of mobile manufacturers may be big but it’s still manageable compared to the number of devices these providers release - each with their own screen size, sensors, performance issues, and graphics drivers. In the official documentation for Material Design, Google shares a long list of Android (and iOS) devices with corresponding screen dimensions and resolutions. Spoiler: It’s much bigger than Apple’s line of 14 devices.
Screen size fragmentation map created in 2015 Source: OpenSignalProduct owners have two solutions in the device fragmentation issue: Either limiting the number of supported devices and systems to a manageable maximum or lowering the app quality when advanced sensors or other functionality isn’t supported by older devices. This, however, doesn’t make development and testing efforts easy.
- Copyright problemsEarlier we made a point that Google takes less time checking and accepting apps to Google Play, which means that you can release your MVP way easier compared to App Store. However, there’s another side to this advantage. First, Google doesn’t conduct thorough patent or copyright checks which means that you can unknowingly post a program that includes features or content already used in another product. Second, you can suffer from copyright infringement yourself when Google Play releases an app that repeats your unique solutions.
Final wordOften, the choice of technology, platform, or a device doesn’t even come down to development challenges. From the marketing point of view, you will first need to look at demographics, which don’t play in Android’s favor in the US. However, it makes no sense to release even half-ready apps for iOS, which is why Android is a perfect place to test your beta product version, an MVP, or even a high-fidelity prototype. If you prefer independence, openness, and more free possibilities, at least from the beginning, Android is also a way to go. And if all fails, consider the cross-platform approach.
This post is a part of our “The Good and the Bad” series. For more information about the pros and cons of the most popular technologies, see the other articles from the series:
The Good and The Bad of Xamarin Mobile Development
The Good and the Bad of Node.js Web App Development
The Good and the Bad of ReactJS and React Native
The Good and the Bad of Swift Programming Language
The Good and the Bad of .NET Framework Programming
The Good and the Bad of Angular Development
The Good and the Bad of Java Programming
The Good and the Bad of Selenium Test Automation Tool