Although it’s become the world’s most popular mobile operating system, Android is still an expanding frontier—and developers are always the first to explore it.
Android grew to 81.5% of the global smartphone market share in 2014, according to the International Data Corporation, passing a billion phone shipments for the first time. In terms of actual OS usage on mobile phones and tablets, Android overtook iOS for the first time this past July. And as of NetMarketShare’s February 2015 report, Android has a 46.9% worldwide OS market share, compared to 42.6% for iOS.
Spread within that massive growth is an operating system split into different forks on different smartphone and tablet device lines, made by different manufacturers all running different versions of Android itself, from Froyo to Lollipop. Along with more options in terms of IDEs, developer tools and cross-platform code integrations, Android developers face a wider array of choices and challenges in creating apps than ever before.
“Developers are very excited to see more tools and resources that allow them to go cross-platform and be more productive in their application development,” said Jeff McVeigh, general manager of performance, client and visual computing at Intel. “This helps save their time by reusing code, avoiding duplicate bugs in separate codebases, and allowing them to leverage their skill sets without having to learn the intricacies of each platform’s development environment. A common pain point cited by developers is dealing with device fragmentation for Android, with a constant challenge to support the long tail while looking forward to the latest OS APIs.”
According to Joseph Hill, cofounder and director of developer relations at Xamarin, modern Android developers pursue a balance between taking advantage of all this new functionality and cross-platform capability while continuing to keep up with and support the massive, fragmented beast that is Android and its broad install base of devices.
“Day to day, developers are facing a challenge,” said Hill. “[They] know they need to deliver a great mobile experience on Android, and iOS or user engagement will be significantly diminished. At the same time, our developers don’t want to maintain two or three versions of the same app in different languages.”
Hill said developers using Xamarin want “a truly native experience for users, written in one language and programming environment, and with an opportunity to share significant amounts of code across the mobile platforms to make development faster and easier.”
More platforms, more devices, more fragmentation
Google generally releases one or two new Android versions every year. Going back through the dessert food alphabet, the platform started with Cupcake, Donut and Éclair in 2009. Those were followed by Froyo and Gingerbread in 2010, Honeycomb and Ice Cream Sandwich in 2011, Jelly Bean in 2012, KitKat in late 2013, and the newest release Android “L,” a.k.a. Lollipop, in November 2014.
Lollipop—the most substantial update to Android in years—adds more than 5,000 new APIs, Google’s next-gen Jack and Jill compilers, and overhauls the UI design with its new Material Design principles, among other features. Developers responded enthusiastically to the release, but months later the problem is a simple one: not enough devices are running it.
According to Google’s latest platform statistics, as of March 2, Lollipop is only running on 3.3% of devices. KitKat, on the other hand, is running on 40.9% of devices, while three different incremental versions of Jelly Bean make up 42.6%.
Michael Crump, senior developer advocate at Telerik parent company Progress, said that despite excitement over the features it offers, developers are thus far hesitant to begin developing apps for Lollipop.
“A lot of pain points for developers right now are centered around the latest version of Android, 5.0 or 5.1,” he said. “There are very, very low adoption rates, and developers trying to target these latest versions don’t have a lot of users at the moment. So a lot of developers aren’t targeting that version specifically right now.”
Android’s history shows that Lollipop will catch up and users will ultimately adopt it, though. Crump explained how Progress is “future-proofing,” or integrating 5.0 features into its existing Android tools ahead of wider adoption.
“When developers are there and the market is there, the new Material Design look and feel—the light and dark themes—will already be in Kendo UI,” said Crump. “If you’re building a hybrid app or another type of native app, when the market catches up, developers will already be able to implement what we’ve put in place.”
Android fragmentation also presents challenges in testing any given app on the litany of devices with different screen sizes and specifications it may inhabit. Companies such as Twitter have completely overhauled their Android apps and development process with an “Android Brain” philosophy: faster, overlapping release cycles, and a stack of Android devices on each developer’s desk to test changes.
Xamarin’s Hill echoed this point, noting the importance of switching to more automated testing when dealing with the diverse Android device landscape.
“There are so many devices running so many versions of Android, developers are quickly realizing that manually testing on a handful of devices is not enough and are looking for ways to automate app testing,” he said. “So we’re seeing a big increase in interest in Xamarin Test Cloud from Android developers.”
Hill revealed some of the Lollipop features Xamarin developers cautiously anticipate targeting, such as how the latest version works with enterprise initiatives like Google’s recently announced Android for Work.
“Developers are excited about the new features in Lollipop like Material Design, Bluetooth Low Energy peripheral mode, and job scheduling, but they need to see critical mass adoption of the new version by users before they can make big investments there,” he said. “One area of interest that has emerged since Lollipop’s release that is interesting to our enterprise developers is the Android for Work initiative that makes it easier to securely manage apps and data.”
Despite the hesitance about developing apps for Lollipop, Hill said Xamarin has identified a large shift toward developers using Material Design in their apps. Aside from the Android 5.0 Lollipop support itself, Google provides a large set of backward-compatible Support Libraries to developers, enabling them to provide new app features such as Material Design while still targeting older versions of Android.
Trends and third-party Android tools changing the game
In as open and malleable a platform as Android, a rich ecosystem of third-party and open-source developer tools have emerged to have a pronounced effect on how Android apps are built, tested and deployed. Our experts pointed to a few of the tools, frameworks and technologies making the biggest impact:
- Genymotion: Progress’ Crump pointed to Genymotion, a “souped-up” Android emulator for native developers that’s faster than Android’s out-of-the-box emulator. Progress uses the emulator in-house, and the tool is popular among its developer customers.
- Hybrid plug-ins: Social sharing, native page transitions, e-mail composers, and cloud integrations with services such as AWS are adding more robust functionality and a richer user experience to Android apps, according to Crump.
- HTML5: HTML5 is gaining momentum by allowing developers to create apps once to run on multiple device platforms and to deploy through multiple application stores. With HTML5, developers can develop apps once and gain market access to billions of devices. McVeigh said Intel strongly supports and actively invests in HTML5 for cross-platform app creation and deployment.
- NDK apps: The prevalence of apps built with Google’s Android NDK tool set continues to grow, according to McVeigh. He attributes this to the inclusion of popular native libraries and frameworks, as well as the need for developers to deliver unique user experiences.
The question of IDEs
The landscape of modern Android development has also changed a great deal with the 1.0 release of Android Studio this past December, which is now the default development environment for Android. First announced at Google I/O in 2013, the new environment for building native Android applications is based on the JetBrains IntelliJ platform, and includes both IDEA Java features and a drag-and-drop interface design tool for screen creation.
With Android Studio 1.0, Google is finally taking the reins of where and how Android apps are developed. Developers have reacted mostly positively, but this leaves the third-party IDEs and plug-ins in limbo as developers decide whether to transition or remain with tools like the Eclipse Android Developer Tools (ADT) plug-in, which is no longer in active development.
“In general, developers are happy that Google has taken over Android Studio,” said Progress’ Crump. “Most Android developers have loved moving away from Eclipse. Android Studio offers some features Eclipse did not, like a Gradle-based build system, which is much more modern and something Android developers look forward to using. Things like code templates to build common app features, the editor with features like IntelliSense is much improved versus using the Eclipse editor, being able to use import-classes and things of that nature.”
Crump mentioned other new Android Studio features popular with developers, including the ProGuard Java class file shrinker and optimizer, and its outsigning capabilities. More importantly, he highlighted how the IDE hooks in with other Google products, including built-in support for Google Cloud Platform, enabling simpler integration of the cloud’s App Engine and messaging into apps with a single sign-in for developers.
Crump said the transition from Eclipse to Android Studio is relatively painless, and that developers are well served by moving under Google’s umbrella.
“It’s the best thing for developers,” Crump said. “With Eclipse, Android was an afterthought. The Eclipse IDE has been around a long time, and Android was just added to it, whereas Android Studio has been built specifically for Android apps.”
Yet the warm reception toward the in-house IDE doesn’t mean developers are flocking to Android Studio 1.0 and its subsequent releases right away. A large number of Android developers still use and rely on the Eclipse ADT plug-in, which remains one of the most popular plug-ins in the Eclipse Marketplace.
“I think many ADT users are disappointed by Google’s decision to no longer support ADT,” said Mike Milinkovich, executive director of the Eclipse Foundation. “We still see a large community using ADT with Eclipse. It is one of the most popular plug-ins we have on Eclipse Marketplace, with 10,000 to 12,000 downloads per month.”
Milinkovich explained that while the Eclipse ADT plug-in is no longer in active development, its Motodev Studio tools are now being hosted at Eclipse under a fork of ADT called Andmore. According to him, the community effort led by experienced Eclipse developers refactors Google ADT plug-ins, and its creators plan to add Gradle tooling—the lack of which is one of the main knocks on Eclipse as opposed to Android Studio.
“I expect to see Andmore develop a very successful and committed community,” said Milinkovich. “We would love to see developers and contributors join the effort.”
The other elephant in the Android IDE room is Visual Studio. While Intel’s McVeigh said that Android Studio 1.0 has clearly improved, and developers now consider it viable for mainstream development, he also said a large number of developers continue to express that Visual Studio provides a richer experience for client development.
Xamarin’s Hill echoed the same sentiment, explaining that through the company’s cross-platform mobile development implementations, developers coding apps in .NET and C# are unaffected by the shift to Android Studio and have chosen to remain in Visual Studio.
“Our developers do not use Android Studio,” he said. “A hundred percent of the functionality offered by Android Studio is available to our developers using their choice of IDE, Xamarin Studio or Visual Studio.”
Tips for modern Android app development
Michael Crump, senior developer advocate at Progress
Consider team skills: “Before you decide to build an Android application, I would look at what current skill set we have as a team, and which approach we need to take based on the app we need to build. There are many types of apps, from one-screen apps to apps with 20 to 30 screens. You may have a Web team capable of getting the app completed and shipped in a shorter amount of time, or you may have a team with a Java background looking to create their line-of-business mobile app even faster. It depends upon the different types of teams you have, and the apps you’re looking to build.”
Joseph Hill, Xamarin cofounder and director of developer relations
Functional UI testing: “If you’re starting a new project, you should write your first UI test as soon as you complete your first screen. It doesn’t matter if the UI will change later—great solutions exist for refactoring code, and you should be prepared to refactor and improve tests in the same way you do your codebase. If you’re using an object-based testing framework like Calabash or Xamarin.UITest, you have the benefit of tests that evolve with your UI without too many changes. A functional test should be an acceptance criteria checklist item for every new piece of UI that you build or change. Craft your Android application to Google’s brand new design metaphors and guidelines to help you craft a beautiful app experience that your users will love.”
Android has proved extremely versatile, and Google has capitalized on its malleability to hook in Android to every emerging device type or platform on the market, from smartphones and tablets, to “Glassware” on Google Glass. Developers can create Android apps integrated with Google’s Chromecast streaming dongle, the Moto 360, and such brands as Android Wear, Android Auto, Android TV and even the company’s DIY virtual reality technology, Google Cardboard.
Altogether, these concerted pushes into new platforms make up Google’s Android Everywhere strategy: the pursuit of true OS and application ubiquity on every screen size.
“The commonality of Android across these markets is hugely attractive to developers,” said Intel’s McVeigh. “Android developers are looking to leverage their existing app investment to expand their market while comprehending the differences in the user interface.”
Xamarin’s Hill talked about the platforms and hardware developers are beginning to gravitate toward, enticed by new form factors and rich data API integrations. As an example, he talked about how the Google Fit API—which reads and pulls fitness data into Android applications tied directly into Android Wear—allows developers to set their app apart with a more unique, personalized experience.
“We do see experimentation in all directions,” said Hill. “Much of the excitement we’ve seen from Android developers lately has been around the opportunities that Android Wear and Google Cardboard provide to more deeply engage end users directly, but we’ve also seen a lot of excitement from our developers targeting the TV through Amazon Fire TV and by connecting to Google Chromecast. There are definitely new opportunities with these form factors to make apps stickier and to break out of crowded app stores. The most successful developers will be the ones with exceptional UX skills to craft seamless experiences in this landscape.”
Of all the new platforms and opportunities available to Android developers, the exploding wearable technology market has given them confidence to begin experimenting with Android Wear and smartwatch-optimized apps. Progress’ Crump explained that as more and more users flock to wearables, developers will see an untapped market strong enough to sustain their investment, but still new enough to allow an app to stand out in the marketplace.
As the Apple Watch infuses a new level of public interest in wearable devices and applications, developers have already started experimenting with coding iOS notification functionality on Android Wear devices. Crump mentioned rumors that Google is already considering adding support for cross-platform integrations of that kind, building off Android’s simplicity in coding apps for new platforms while still baking in enough native functionality to make a user experience unique in an Android Wear app.
“The great thing about wearables is that you’re still using the same skill set you already have—it’s just a different-sized screen,” said Crump. “Inside of Android Wear, there’s a feature called Creative Vision. So while most users are used to launching apps by clicking on an icon, the latest version of Android Wear automatically picks up things like your current location and physical activity, and inserts this information into cards that will pop up on the watch.”
So if a smartwatch user is about to board a flight, a card will pop up with their boarding pass without needing to take out their smartphone. From a developer perspective, within an environment like Android Studio, they are already set up to leverage their existing skill set on a platform with a different-sized screen and where content is delivered in an entirely different way.
“When you’re starting to develop for the smaller screen of an Android Wear device, in Android Studio it gives you a preview of that screen,” said Crump. “Obviously not everything available on the phone is available on the watch at the moment, but you can still do a drag-and-drop layout for your UI, and by default Android helps steer you in the right direction to build for the watch. On a higher level, there are various types of layouts you can implement as well as entire design guidelines for building that watch app quickly, and where it can integrate features like location or heart-rate monitoring and pop-up alerts. Developers have to learn some of the new APIs featured in the watch, but they’re using all the skills they already have.”
With as much developer interest as Android Wear has generated, there’s still a general trepidation around most of the other platforms in the Android ecosystem. Android Auto has a large number of car manufacturers signed on as partners, but with consumer releases not expected until the end of 2015, developers are cautious to make that leap. The same is true for Android TV, for which supported TVs and set-top boxes are only beginning to make it to market, not to mention the cheap in-house streaming competition of Chromecast and many similar services providing the same type of entertainment content delivery.
For Progress and Telerik’s part, they’re still seeing the most developer interest around smartphones, tablets and wearables, where markets for devices such as the Nexus line of phones and LG G watches are hot. Busy with existing device types and wary of another Google Glass situation, developers are just keeping an eye on the rest of the “Android Everywhere” strategy for now.
“When the market is there—and it will be eventually—developers will see various challenges with it,” Crump said. “Going from a tiny watch to a big 42-inch TV screen is a big jump, but Android automatically has ways to set layouts to adapt to those types of screens.”
Xamarin’s Hill sees Android’s expansion as a great thing for developers and users, and a sign of the mobile operating system’s continued dominance on everything from phones and wearables to the Internet of Things.
“Android seems to be going everywhere and tackling every new form factor, which means it is for sure on the leading edge when it comes to the Internet of Things,” he said. “This is great for developers, since writing an application for a new form factor doesn’t mean you have to learn a new platform or language. Your code and Android application just runs on anything that is running Android, and that is a huge deal for developers.”