Android is an operating system and programming platform developed by Google for mobile phones and other mobile devices, such as tablets. It can run on many different devices from many different manufacturers. Android includes a software development kit (SDK) that helps you write original code and assemble software modules to create apps for Android users. Android also provides a marketplace to distribute apps. All together, Android represents an ecosystem for mobile apps.
Developers create apps for a variety of reasons. They may need to address business requirements or build new services or businesses, or they may want to offer games and other types of content for users. Developers choose to develop for Android in order to reach the majority of mobile device users.
As the world's most popular mobile platform, Android powers hundreds of millions of mobile devices in more than 190 countries around the world. It has the largest installed base of any mobile platform and is still growing fast. Every day another million users power up their Android-powered devices for the first time and start looking for apps, games, and other digital content.
Android provides a touchscreen user interface (UI) for interacting with apps. Android's UI is mainly based on direct manipulation. People use touch gestures such as swiping, tapping, and pinching to manipulate on-screen objects. In addition to the keyboard, there's a customizable on-screen keyboard for text input. Android can also support game controllers and full-size physical keyboards connected by Bluetooth or USB.
The Android home screen can contain several panes of app icons, which launch their associated apps. Home screen panes can also contain app widgets, which display live, auto-updating content such as the weather, the user's email inbox, or a news ticker. Android can also play multimedia content such as music, animation, and video. The figure above shows app icons on the home screen (left), playing music (center), and displaying app widgets (right). Along the top of the screen is a status bar, showing information about the device and its connectivity. The Android home screen may be made up of several panes, and the user swipes back and forth between the panes.
Android is designed to provide immediate response to user input. Besides a dynamic interface that responds immediately to touch, an Android-powered device can vibrate to provide haptic feedback. Many apps take advantage of internal hardware such as accelerometers, gyroscopes, and proximity sensors to respond to additional user actions. These sensors can also detect screen rotation. For example, you could design a racing game where the user rotates the device as if it were a steering wheel.
The Android platform, based on the Linux kernel, is designed primarily for touchscreen mobile devices such as mobile phones and tablets. Because Android-powered devices are usually battery-powered, Android is designed to manage processes to keep power consumption at a minimum, providing longer battery use.
To develop apps that take advantage of the Android operating system and UI, use the Android software development kit (SDK). The SDK includes software libraries of prewritten code, a debugger, a device emulator, documentation, sample code, and tutorials. Use the SDK to create apps that look great and take advantage of the hardware capabilities available on each Android-powered device.
To develop apps using the SDK, you use the Java programming language to develop the app and Extensible Markup Language (XML) files to describe data resources. By writing the code in Java and creating a single app binary, you create an app that can run on both phone and tablet form factors. You can declare your UI in lightweight sets of XML resources. For example, create one set for parts of the UI that are common to all form factors, and other sets for features specific to phones or tablets. At runtime, Android applies the correct resource sets based on the device's screen size, screen density, locale, and so on.
To help you develop your apps efficiently, Google offers an integrated development environment (IDE) called Android Studio. It offers advanced features for developing, debugging, and packaging Android apps. Using Android Studio, you can develop for any Android-powered device, or create virtual devices that emulate any hardware configuration.
Android provides a rich development architecture. You don't need to know much about the components of this architecture, but it is useful to know what is available in the system for your app to use. The following diagram shows the major components of the Android stack—the operating system and development architecture.
In the figure above:
You can distribute your Android app in many different ways: email, website, or an app marketplace such as Google Play. Android users download billions of apps and games from the Google Play store each month. Google Play is a digital distribution service, operated and developed by Google, that serves as the official app store for Android. Google Play lets consumers to browse and download apps developed with the Android SDK.
Google provides major incremental upgrades to the Android operating system using confectionery-themed names. The latest major release is Android 8.0 "Oreo".
Code name | Version number | Initial release date | API level |
N/A | 1.0 | 23 September 2008 | 1 |
1.1 | 9 February 2009 | 2 | |
Cupcake | 1.5 | 27 April 2009 | 3 |
Donut | 1.6 | 15 September 2009 | 4 |
Eclair | 2.0 – 2.1 | 26 October 2009 | 5–7 |
Froyo | 2.2 – 2.2.3 | 20 May 2010 | 8 |
Gingerbread | 2.3 – 2.3.7 | 6 December 2010 | 9–10 |
Honeycomb | 3.0 – 3.2.6 | 22 February 2011 | 11–13 |
Ice Cream Sandwich | 4.0 – 4.0.4 | 18 October 2011 | 14–15 |
Jelly Bean | 4.1 – 4.3.1 | 9 July 2012 | 16–18 |
KitKat | 4.4 – 4.4.4 | 31 October 2013 | 19–20 |
Lollipop | 5.0 – 5.1.1 | 12 November 2014 | 21–22 |
Marshmallow | 6.0 – 6.0.1 | 5 October 2015 | 23 |
Nougat | 7.0 | 22 August 2016 | 24 |
Oreo | 8.0 | August 21, 2017 | 26 |
Tip: See previous versions and their features at The Android Story. The dashboard for platform versions shows the distribution of active devices running each version of Android, based on the number of devices that visit the Google Play store. It's a good practice to support about 90% of the active devices, while targeting your app to the latest version.
Note: To provide the best features and functionality across Android versions, use the Android Support Library in your app. This library allows your app to use recent Android platform APIs on older devices.
While the Android platform provides rich functionality for app development, there are still a number of challenges you need to address, such as:
Android runs on billions of handheld devices around the world and supports various form factors including wearable devices and televisions. Devices come in different sizes and shapes, which affects how you design the screens and UI elements in your apps.
In addition, device manufacturers may add their own UI elements, styles, and colors to differentiate their products. Each manufacturer offers different features with respect to keyboard forms, screen size, or camera buttons. An app running on one device may look a bit different on another. Your challenge, as a developer, is to design UI elements that work on all devices.
An app's performance is determined by how fast it runs, how easily it connects to the network, and how well it manages battery and memory usage. Performance is affected by factors such as battery life, multimedia content, and internet access. Be aware that some features you design for your app may cause performance problems for users. For example, to save the user's battery power, enable background services only when they are necessary.
You need to take precautions to make your code, and the user's experience when they use your app, as secure as possible.
The Android platform continues to improve and provide new features you can add to your apps. However, you should ensure that your app can still run on devices with older versions of Android. It is impractical to focus only on the most recent Android version, as not all users may have upgraded or may be able to upgrade their devices. Fortunately Android Studio provides options for developers to more easily remain compatible with older versions.
Introductory Android developer documentation: