Android Technical InformationWelcome to the Android technical documentation section of the site. Here you can find technical information useful to people and organizations who are looking to modify, contribute to, or port the Android software. This is "under the hood" information intended for engineers.
Dalvik Technical InformationThe Dalvik Virtual Machine is the heart of Android. It's a fast, just-in-time compiled, optimized bytecode virtual machine. Android applications are compiled to Dalvik bytecode and run on the Dalvik VM. This section includes detailed information such as the Dalvik bytecode format specification, design information on the VM itself, and so on.
Dalvik is the managed runtime used by applications and some system services on Android. Dalvik was originally created specifically for the Android project.
Much of the documentation in this directory is intended to help with the ongoing development of Dalvik, as opposed to most of the other documentation on this site, which is geared more towards application development.
DebuggingAndroid is a large and complex system. This section includes tips and tricks about debugging at the platform level.
The following sections contain information, documentation, tips and tricks about debugging Android at the platform level, typically during development of platform-level features.
Encryption Technical InformationThe Android Open-Source Project includes the ability to encrypt the user's data. This document is written for 3rd parties developing Android devices who want to include support for encryption on their device. It covers the few things that must be done so encryption will work.
Encryption on Android uses the dm-crypt layer in the Linux kernel. Read the detailed description of how it is tied into the Android system and what must be done on a new device to get this feature working.
Security Technical InformationAndroid provides a robust multi-layered security architecture that provides the flexibility required for an open platform, while providing protection for all users of the platform. This document focuses on the security features of the core Android platform.
Input Technical InformationAndroid's input subsystem is responsible for supporting touch screens, keyboard, joysticks, mice and other devices.
The Android input subsystem supports many different device classes, including keyboard, joystick, trackball, mouse and touch screen.
The documentation in this section describes how to configure, calibrate, test, and write drivers for input devices.
Data Usage Technical InformationAndroid's data usage features allow users to understand and control how their device uses network data. This document is designed for systems integrators and mobile operators, to help explain technical details they should be aware of when porting Android to specific devices.
Android 4.0 (Ice Cream Sandwich) introduces new features that help users understand and control how their device uses network data. It monitors overall data usage, and supports warning or limit thresholds which will trigger notifications or disable mobile data when usage exceeds a specific quota. Data usage is also tracked on a per-application basis, enabling users to visually explore historical usage in the Settings app. Users can also restrict how specific applications are allowed to use data when running in the background.
The documentation in this section is intended for systems integrators and mobile operators, to help explain technical details they should be aware of when porting Android to specific devices. These details are summarized below, and the android-porting mailing list is a good place for further discussion.
Accessory Protocol InformationAndroid devices can connect to hardware accessories, such as audio docks, keyboards and custom hardware, through USB or Bluetooth. This document describes the Android Open Accessory protocol for accessory hardware builders.
Android Open Accessory support allows external USB hardware (an Android USB accessory) to interact with an Android-powered device in a special accessory mode. When an Android-powered powered device is in accessory mode, the connected accessory acts as the USB host (powers the bus and enumerates devices) and the Android-powered device acts in the USB accessory role. Android USB accessories are specifically designed to attach to Android-powered devices and adhere to the Android Open Accessory Protocol, that allows them to detect Android-powered devices that support accessory mode. Accessories must also provide 500mA at 5V for charging power. Many previously released Android-powered devices are only capable of acting as a USB device and cannot initiate connections with external USB devices. Android Open Accessory support overcomes this limitation and allows you to build accessories that can interact with an assortment of Android-powered devices by allowing the accessory to initiate the connection.
Note: Accessory mode is ultimately dependent on the device's hardware and not all devices support accessory mode. Devices that support accessory mode can be filtered using a
<uses-feature>element in your corresponding application's Android manifest. For more information, see the USB Accessory developer guide.
Android Open Accessory support is included in Android 3.1 (API Level 12) and higher, and supported through an Add-On Library in Android 2.3.4 (API Level 10) and higher.