The Android Mobile Development Platform: A Reference Guide

July 18, 2010

Android, an open source mobile platform with no upfront fees, has emerged as a new mobile development option that offers many benefits over competing platforms. But is it right for your project? In this reference guide, you'll learn all the nitty-gritty details you need to know to evaluate Android, including the tools and technologies for developing on the platform as well as the required costs. Armed with this information, you can make an informed decision as to whether or not Android is the right fit for your particular organization or development project.

Android Programming Languages

Native Android applications are written in Java. Applications requiring existing C/C++ libraries can take advantage of the Android Native Development Kit (NDK).

In addition to native Android applications written in Java, Adobe Flash and Adobe AIR support were added in Android 2.2, enabling a whole new group of developers to target Android devices.

Development Tools and Setup Costs

Unlike many mobile development platforms, Android is open and freely available. There are no developer fees or screening processes, nor must developers purchase expensive compilers or limit themselves to one specific operating system for development.

Android applications can be developed on a variety of operating systems, including:

In terms of integrated development environments (IDEs), developers have a number of choices. Eclipse is the most popular IDE for Android development because it offers a handy Android Development Tools (ADT) plugin. At the time of writing, the ADT plugin supported both Eclipse 3.4 and 3.5. Developers can use other IDEs if they desire; the command-line tools that come with the Android SDK facilitate Android development and provide many of the features available within the Eclipse ADT plugin (e.g. creating projects, packaging resources and generating Android package files for deployment to devices, etc.).

Android Devices: Features, Functions and Availability

The only real cost for Android developers is the acquisition of device hardware. Although the Android team has insisted that testing within the Android emulator is generally sufficient for most development, we feel that emulators are no real substitute for testing on (at least some) target devices.

Fortunately (and unfortunately), many Android devices are available on the global market today. Consumers have an unprecedented number of choices in terms of distinctive devices, carriers, and payment plans. According to the official Google Blog, as of mid-2010, more than 60 Android handsets shipped from 21 different manufacturers. These Android devices are available on 59 carriers in 48 countries. In June 2010, Google announced that more than 160,000 Android devices are being activated each day (a rate of nearly 60 million devices annually).

Most Android devices are considered smartphones, with all the goodies one would expect (e.g. fast processors, touch screens, high-megapixel cameras, LBS services, accelerometers, and so on). That said, other devices also run on the Android platform, including Internet tablets, e-book readers, TV boxes, and others. It is certainly feasible to create a single application that can run smoothly across all these devices. However, developers will still need to identify and understand their target users and devices. Luckily, the Android platform and tools are designed to ensure maximum compatibility and to make compatibility a (relatively) straightforward matter for developers.

If you're unsure which Android devices to acquire for development purposes, consider one of the Android Dev phones, ADP1 or ADP2, which are available for purchase if you sign up as a developer to publish on Google's Android Market. The Android Dev phones are SIM-unlocked and therefore usable on any GSM network; they feature a bootloader that allows you to flash the device with different system images (helpful for mimicking various device platforms on a single device). Another SIM-unlocked handset is the Google Nexus One.

Android Development Framework and APIs

The Android application framework includes familiar programming constructs, such as threads and processes and specially designed data structures to encapsulate objects used by the Android operating system. With Android, developers use familiar class libraries exposed through Android's Java packages to perform common tasks such as graphics, database access, network access, secure communications, and utilities. In addition to these familiar Java class libraries, such as java.net, developers can also rely on specialty libraries using well-defined open standards like OpenGL Embedded Systems (OpenGL ES), SQLite, and WebKit. The Android packages include support for:

One of the Android platform's most compelling features is well-designed application integration. Developers can write applications that integrate seamlessly with other Android applications, including core platform applications such as the Browser, Maps, Contacts, Messaging, and Email.

On the Android platform, all apps are created equal. There is no distinction between native and third-party applications, enabling healthy competition among application developers. All Android applications use the same libraries and have access to the same permissions options and functionality. Android applications have direct access to the underlying hardware, allowing developers to write much more powerful applications.

The Android SDK also comes with extensive developer documentation. Developers can also find the complete documentation online with videos, the official Android developer blog and an active Android development community.

Publication Opportunities and Target Audience

In terms of market share, the Android platform has been gaining ground steadily against competitive platforms such as the Apple iPhone, RIM BlackBerry, and Windows Mobile (all of which have been around considerably longer). The latest numbers from The Nielsen Company (as of Summer 2010) show BlackBerry in the lead with 35% of the smartphone market, and declining. Trailing close behind and gaining is Apple's iPhone at 28% and Microsoft Windows Mobile is declining with a 19% showing. Android is trailing with 9%, but its growth numbers are accelerating rapidly and according to some sources Android devices are selling faster than most, if not all, competing platforms. If you look back over the past 18 months since Android first became available to consumers, you can see that the platform has been gaining ground steadily at the expense of its competitors, yet the market could potentially accommodate substantially more growth by the platform.

Android applications have none of the costly and time-intensive testing and certification programs required by other platforms. Android developers are free to choose any kind of revenue model they want. They can develop freeware, shareware or trial-ware, ad-driven applications, and paid applications. With Android, developers can write and publish any kind of application. Developers can tailor applications to small demographics, instead of just the large-scale money-making ones often insisted upon by mobile operators. Vertical market applications can be deployed to specific, targeted users.

Because Android developers have a variety of application-distribution mechanisms to choose from, they can pick the methods that work for them instead of being forced to play by others' rules. Android developers can distribute their applications to users in a variety of ways. The most popular distribution mechanism is Google's Android Market. The Android Market is a generic application store with a revenue-sharing model. As of July 2010, more than 90,000 applications were available in the Android Market. Many other Android applications have been sold through other publication channels. More than 180,000 Android developers have downloaded the Android SDK and developed Android applications.

Android Platform Pros and Cons

PROS

CONS

Apps written in Java, which is an easy, commonly understood programming language

If you don't like Java, you're out of luck.

Very low barrier to entry. No vetting of developers to determine whether they are worthy of developing apps. No fees to join development community.

Developer expertise and application quality will vary greatly. Neither apps nor developers are "curated" as they sometimes are on other platforms, but technically, malicious developers exist on all platforms.

Freely available development tools are popular, powerful and generally well designed. In fact, the Android development tools are impressive compared to other provided for other mobile platforms.

Like all mobile platforms, developers are reliant on the platform and tool developers to address tool defects and limitations.

Android SDK and operating system is powerful, full of features, and easy to use. There is no distinction between developer apps and native apps. Developers have unprecedented access to underlying hardware on device in a safe and secure manner.

With this power comes greater developer responsibility to design stable, responsive applications.

Many publication channels available, including publishing through consolidated app markets as well as self publication. Suitable for mass market, enterprise development and everything else.

When developers choose to publish through third-party app markets, they often must give up a portion of their profits. Because there are many publication channels, software piracy becomes a bigger concern.

Vast variety of devices available throughout the world, on many carriers, with many plans, including many with unlimited data.

Rapidly growing market share. There's still room for lots of growth. Applications can still distinguish themselves, and killer apps are developed all the time.

Still smaller market share than more mature mobile platforms such as BlackBerry and iPhone.

Free, open platform allows any hardware manufacturer to build devices based on the open platform.

The freedom to grab the open source Android platform and place it on any device -- without anyone's permission -- can lead to incompatible devices, confusion among users, and proliferation of platform devices and distribution mechanisms for developers to support.

Summary

Android developers enjoy many benefits over competing mobile platforms. Android is relatively new to the mobile scene, offering a distinctly different approach: it's open and free with robust access to the underlying device hardware. Designed in Java, Android applications can be created on a variety of operating systems with free and readily available tools. Getting started with writing mobile applications has never been so easy or affordable. And after you've created those apps, you can rest assured that there are millions of Android users all over the world who are ready to use them.

About the Authors

Lauren Darcey and Shane Conder have authored two books on Android development: an in-depth programming book entitled "Android Wireless Application Development" (ISBN-13: 978-0-321-62709-4) and "Sams Teach Yourself Android Application Development in 24 Hours" (ISBN-13: 978-0-321-67335-0). When not writing, they spend their time developing mobile software at their company and providing consulting services. They can be reached at androidwirelessdev+dc@gmail.com and via their blog. Follow them on twitter: @androidwireless.