Android: Introduction, Compatibility and Licensing
Android: Introduction, Compatibility and Licensing
What is Android
Android is an open-source software stack for mobile devices, and a corresponding opensource project run by Open Handset Alliance led by Google. Google purchased the initial developer of the software, Android Inc., in 2005.
Design
Design cont.
Android consists of a kernel based on the Linux kernel, with middleware, libraries and APIs written in C application software running on an application framework which includes Java-compatible libraries based on Apache Harmony clean room development.
Dalvik VM
All applications written in Java and converted to the dalvik executable .dex Every android app runs its own process, with its own instance of the dalvik virtual machine Not a traditional JVM, but a custom VM designed to run multiple instances efficiently on a single device VM uses linux kernel to handle low-level functionality incl. security, threading, process and memory management
Security
Android is a multi-process system, in which each application (and parts of the system) runs in its own process. Most security between applications and the system is enforced at the process level through standard Linux facilities, such as user and group IDs that are assigned to applications. Additional finer-grained security features are provided through a "permission" mechanism that enforces restrictions on the specific operations that a particular process can perform, and per-URI permissions for granting ad-hoc access to specific pieces of data.
Compatibility
Why? Allow customizable devices Create Common eco system Android compatibility is free and easy Obtain Android source code Comply with Android Compatibility Definition (ACD) doc List requirements that need to be met for devices to be compatible with a particular version on Android Pass the Compatibility Test Suite (CTS) Automated test harness running on desktop, manages test exectuion Test cases written, packaged as .apk to run on actual device or emulator Porting guide available for bringing up Android on custom HW
Licensing
The source code for Android is available under free and open source software licenses. Linux kernel (with Googles changes) is under GPL 2.0 and rest (including network and telephony stacks) under Apache License V 2.0
Trademark
In order to use the Android trademark, device manufacturers must ensure that the device complies with the Compatibility Definition Document (CDD) and then get permission from Google. Devices must also meet this definition to be eligible to license Google's closed-source applications, including the Android Market. Participation in the compatibility program is free of charge.
OpenJDK Context
JCK and the associated license did not initially allow users to compile or run the tests, but the right to see the code is not associated with tainting concerns. However, since the release of OpenJDK, a specific license allow to run the JCK in the OpenJDK context, that is for any GPL implementation deriving substantially from OpenJDK