1.0: Introduction to Android
- What is Android?
- Why develop apps for Android?
- Android versions
- The challenges of Android app development
- Learn more
What is Android?
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.
Why develop apps for Android?
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.
Most popular platform for mobile apps
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.
Best experience for app users
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.
It's easy to develop apps
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:
- Apps: Your apps live at this level, along with core system apps for email, SMS messaging, calendars, internet browsing, and contacts.
- Java API framework: All features for Android development, such as UI components, resource management, and lifecycle management, are available through application programming interfaces (APIs). You don't need to know the details of how the APIs work. You only need to learn how to use them.
- Libraries and Android runtime: Each app runs in its own process, with its own instance of the Android runtime. Android includes a set of core runtime libraries that provide most of the functionality of the Java programming language. Many core Android system components and services are built from native code that require native libraries written in C and C++. These native libraries are available to apps through the Java API framework.
- Hardware abstraction layer (HAL): This layer provides standard interfaces that expose device hardware capabilities to the higher-level Java API framework. The HAL consists of multiple library modules, each of which implements an interface for a specific type of hardware component, such as the camera or Bluetooth module.
- Linux kernel: The foundation of the Android platform is the Linux kernel. The layers above the Linux kernel rely on the Linux kernel for threading, low-level memory management, and other underlying functionality. Using a Linux kernel enables Android to take advantage of Linux-based security features and allows device manufacturers to develop hardware drivers for a well-known kernel.
Many distribution options
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.
The challenges of Android app development
While the Android platform provides rich functionality for app development, there are still a number of challenges you need to address, such as:
- Building for a multiscreen world
- Getting performance right
- Keeping your code and your users more secure
- Making sure your app is compatible with older platform versions
- Understanding the market and the user
Building for a multi-screen world
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.
Maximizing app performance
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.
Keeping your code and your users more secure
You need to take precautions to make your code, and the user's experience when they use your app, as secure as possible.
- Use tools such as ProGuard, which is provided in Android Studio. ProGuard detects and removes unused classes, fields, methods, and attributes.
- Encrypt all of your app's code and resources while packaging the app.
- To protect critical user information such as logins and passwords, secure your communication channel to protect data in transit across the internet, as well as data at rest on the device.
Remaining compatible with older versions of Android
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: