via Google Play or a third-party site.
Introduction to Android
Before we get further into the details of developing software for Android, a
more detailed introduction to the Android architecture is appropriate. Our
description starts with the hardware and builds layer upon layer from that
foundation.
Hardware
Although it has been proved possible to run Android on other platforms, the
main target platform is ARM. ARM processors are 32-bit reduced instruction
set computer (RISC) processors. Like other RISC processors, they are
designed for speed, with the idea that a simpler set of processor instructions
creates greater efficiency and throughput. ARM processors are also designed
for low power usage, making them ideal for mobile and embedded devices.
Indeed, ARM is the dominant processor in these markets.
Linux Kernel
The first layer of software to run in the Android stack is a customized Linux
kernel. Most of the customizations take the form of feature enhancements or
optimizations to help Android and Linux work together more efficiently.
Originally, Google made a point of contributing code it developed, but some
of the features were rejected by the mainline Linux kernel developers for
inclusion in the standard Linux kernel. This meant that to keep its desired
code customizations, Google had to create a fork of the Linux kernel, which is
permissible due to the license under which the kernel is released. Chapter 22,
“Kernel and Module Management,” gives an introduction to the Linux kernel.
Libraries
Software libraries run on top of the kernel. These libraries are used by the
higher-level components of Android and are made available to developers to
use when writing Android applications using the Android software
development kit (SDK), which is discussed later in this chapter. These
libraries include a version of the standard C library (libc), libraries for
recording and playback of many popular media formats, graphics and web
browser engines, font rendering, and more.