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:
- Windows XP (32-bit), Vista (32-bit or 64-bit), and Windows 7 (32-bit and 64-bit)
- Mac OS X 10.5.8 or later (x86 only)
- Linux (tested on Linux Ubuntu 8.04 LTS, Hardy Heron)
The Android SDK and development tools are freely available on the Android developer site, where developers can download the SDK after agreeing to the terms of the Android SDK License Agreement. Developers must also have JDK 5.0 or JDK 6 (freely available).
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:
- User interface controls (Buttons, Dropdowns, Text Input, Grids, Tabs, Gallery)
- Flexible user interface design and layout (programmatically or via XML)
- Secure networking and Web-browsing features (SSL, WebKit, XML parsing)
- Structured storage and relational databases (SQLite)
- Powerful 2D and 3D graphics (including OpenGL ES 2.0)
- Enhanced support for audio, still images, and video media in many formats, "ducking," etc.
- Access to underlying hardware sensor data, the camera, accelerometer, etc.
- Access to underlying services like location-based services (LBS), Wi-Fi, Bluetooth, etc.
- A robust unit testing framework for automated testing of Android apps
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.