1. abi
-
-
- cpp
- The content of this directory is not clear what it is about as it contains several C++ files.
-
2. art
-
-
- build
- compiler
- dalvikvm
- dex2oat
- disassembler
- oatdump
- patchoat
- runtime
- sigchainlib
- test
- tools
-
3. bionic
-
- Bionic is mainly a port of the BSD C library to our Linux kernel with the following additions/changes:
- - no support for locales
- - no support for wide chars (i.e. multi-byte characters)
- - its own smallish implementation of pthreads based on Linux futexes
-
- support for x86, ARM and ARM thumb CPU instruction sets and kernel interfaces
- libc
-
This directory contains the different architecture that is supported to use bionic, namely - ARM (under the arch-arm/) and x86 (under the arch-x86/ directory). In order to understand in detail on how to add functions or port it to different architecture you want to read the file OVERVIEW.TXT under the docs/ folder
- bionic -
- arch-arm
-
This directory contains bionic libc libraries for ARM processor class
- cortex-a8 -
- bionic - sources needed to link and load bionic and it includes the functions
- cortex-a9 - contains optimized assembler code for A9 processor- memcpy, memset and strcmp
- cortex-a15 - contains optimized assembler code for A15 processor- memcpy, memset and strcmp
- generic - contains assembler code for generic ARM processor - memcpy, memset and strcmp
- include - contains header files
- krait - contains optimized assembler code for krait processor - memcpy, memset and strcmp
- syscalls - system calls assembler code (autogenerated files)
- arch-mips
-
This directory contains bionic libc libraries for MIPS processor class
- bionic - sources needed to link and load bionic and it includes the functions
- include - contains header files
- string - contains string related functions
- syscalls - system calls assembler code (autogenerated files)
- arch-x86
-
This directory contains bionic libc libraries for x86 processor class
- bionic - sources needed to link and load bionic and it includes the functions
- include - contains header files
- string - contains string related functions
- syscalls - system calls assembler code (autogenerated files)
- bionic - contains all the functions available in libc
- include - contains header files
- kernel
-
This directory contains 'cleaned' kernel related headers and also tools to 'clean up' normal plain vanilla Linux headers
- arm-arm - 'clean' ARM Linux headers
- arm-mips - 'clean' MIPS Linux headers
- arm-x86 - 'clean' x86 Linux headers
- common - 'clean' non-architecture specific Linux headers
- tools - contain scripts for generating clean headers (instructions outlined inside README.TXT file)
- netbsd - functions available from NetBSD
- private - private or non-standard header files specific for Android needs
- stdio - functions for standard I/O
- stdlib - functions for standard library functions - exit, tolower, etc
- string - functions for standard string functions
- tools - Python scripts containing helper function and syscalls generation
- tzcode - functions for timezone functions
- unistd - functions for universal standard functions
- upstream-dlmalloc - from README.txt "This directory contains malloc/free routines implemented by Doug Lea (aka dlmalloc). You should not edit these files directly. Make fixesupstream and then pull down the new version of the file."
- upstream-freebsd - from README.txt "This directory contains upstream FreeBSD source."
- upstream-netbsd - from README.txt "This directory contains upstream NetBSD source."
- wchar - string function (not sure what is this for ?)
- zoneinfo - timezone host data
- libdl
- This directory what looks like a ‘stub’ program that are being used during linking process. The main function of the program is to open a library and read the symbol. The file that contains the main functionality is dlfcn.c under the /bionic/linker/ directory
- libm
-
Contains Math library. Several architecture are supported inside this directory - ARM, i386, i387, MIPS
- upstream-freebsd - math library from FreeBSD
- libstdc++
- linker - contains linker code that is used during kernel bootup
- tests - contains test cases for testing the different functions available such as - math, pthread, regex,etc
- This directory contains utility that is used during linking process. The tool is called Android Dynamic Linker what is does is it assign fix addresses to the library to reduce the size of the library and also increases the loading speed. .
4. bootable
-
-
- bootloader/legacy
- This directory is empty
- diskintaller/editdisklbl - tool to test existing partition with the specified configuration in a file
- recovery
-
This directory contains code for creating recovery program. The code inside shows the different things that needs to be implemented. This can be used as a boilerplate to create your own custom recoveries like the ClockworkMod.
-
- applypatch - Applies binary patches to files
- edify - Contains code that parse update scripts. The language is call ‘edify’ (this is used in conjuction with the updater sub-project)
- etc - contains sample update script (the file is called update-script)
- fonts -
- minadbd - this contains a stripped down version of 'adbd' daemon for adb connection
- minelf - contains source library that is used by the updater sub-project
- minui - contains graphical library to be used by the recovery project.The library are mostly utilized for displaying information
- minzip - library utilized in the recovery project+
- mtdutils - library utilized for reading & writing to the Flash memory
- res - contains images that are used as background in the recovery project
- testdata - test .zip files for testing the update process
- test
- tools - library that contains misc function that are used by the recovery project. Some interesting function that allow checking of “unclean” reboot.
- updater - This contains the executable to run the update script
-
-
5. build
-
- The main entry point of the build system resides here - envsetup.sh, if you follow the instruction in source.android.com you will see that the first step before you do anything to build Android is to use the command source build/envsetup.sh
-
- The script will check few things to make sure all the needed application available in the local machine. It also setup the devices that can be built, which is extracted from the directory device
-
-
- core
-
This directory contains the heart of the build system, it consists of a number of files with the .mk extension (Makefile). The entry point of the build is the main.mk file
- combo - this directory contains makefile that setup the host for things like - compiler, compiler settings. Architecture specific compiler settings are set here.
-
- arch -
- include - architecture specific header file is inside here. The hearder file is included in ALL Android code.
- tasks - makefiles that contains helper functions
- clang
- libs
- This directory contain a program which is written to replace the "cp" command to be used in Android. Not sure what is the rationale behind the use of this program.
- target
-
- board - this directory contains configuration for the target device that you are planning to build for. Looking at the content of this directory it looks like it is being used for emulators. The files inside this directory looks similar with the device directory where it contains .mk file for board specifics.
- product - contains makefiles for the apps that need to be build
-
- security - contains generated keys that are used in normal build process, own keys can be generated using the 'make_key' application
- tools
-
This directory contains a number of tools that can be used as part of the build process.
[need to investigate later whether the tools inside this directory is used as part of the build process - document tools that are used in the build process].
- acp - "cp" version from Google
- apicheck - script to run apicheck application
- atree - this project is a program for file listing or something like the ‘ls’ command. (inside out/host/linux-86/bin)
- check_prereq - (inside out/target/product/<device>/system/bin)
- droiddoc - contains document templates that are used to generate documentation using Javadoc
- fs_config - this project is part of the host tools (inside out/host/linux-86/bin)
- fs_get_stats - contain source for a utility to retrieve file stats
- releasetools - this project contains python scripts that can be used to sign your .apk, create an OTA file and other release related tasks
- rgb2565 - this project is to convert image to a 565raw format (inside out/host/linux-86/bin)
- signapk - this project is to sign your .apk file, the project is written in Java code (inside out/host/linux-86/framework)
- signtos
- zipalign - according to the README file “The purpose of zipalign is to ensure that all uncompressed data starts with a particular alignment relative to the start of the file. This allows those ::::::::portions to be accessed directly with mmap() even if they contain binary data with alignment restrictions.” (inside out/host/linux-86/bin)
-
6. cts
-
-
This directory contains compatibility test suite (
http://source.android.com/compatibility/cts-intro.html). The test coverage are broken down into different folders to cover different parts of Android.
- apps
-
This directory contains applications test suites. The test cases are written in Java and it test different device functionality from application layer such as - USB, sensors, camera, bluetooth, etc
- cts-usb-accessory - USB accessories mode test case
- CtsVerifier -
- build - contains makefiles to generate and package the test cases
- development
-
- ide/eclipse - contains .sh file to generate the CTS classpath file for Eclipse
- hostsidetests
-
- aadb -
- appsecurity - application security test cases
- holo
- monkey - monkey test cases
- sample
- usb -
- libs
-
- commonutil
- deviceutil
- json - JSON library
- runner - contain makefile to run the core tests which resides inside the tests/core/runner
- testserver - http test server
- vogar-expect - according to the README file classes were extracted from the http://code.google.com/p/vogar/ project. Looking at the description of the project it is a command line test utility for Java
- wrappedgtest -
- suite
-
- audio_quality -
- pts -
- tests
-
This directory contains Java test cases testing different kind of things, mostly on features that are available from Java application.
- acceleration -
- accessibility -
- assets -
- core -
- deviceadmin -
- expectations -
- jni -
- plans -
- ProcessTest -
- res -
- sample
- SignatureTest -
- systemAppTest -
- src -
- tests -
- uiautomator -
- vm-tests-tf -
-
This directory contains compatibility test suite (
http://source.android.com/compatibility/cts-intro.html). The test coverage are broken down into different folders to cover different parts of Android.
-
-
- tools
- This directory contains different kind of tools that are available for you to use. The tools are not used in the build process.
-
-
-
-
-
- cfassembler - class to generate .class files that are somehow damaged in order to test the dalvik vm verifier.
- cts-api-coverage - Tool that generates a report of what Android framework methods are being called from a given set of APKS
- cts-holo-generation
- cts-java-scanner - searches a source directory for native gTests and outputs a list of test classes and methods.
- cts-java-scanner-doclet -
- cts-native-scanner - scanner of C++ gTest source files
- cts-reference-app-lib - Base Class that provides common functionality for all Reference Application Tests
- cts-xml-generator - class that outputs a test package xml
- dasm - .d file disassembler and assembler
- device-setup - Collect device information on target device
- dex-tools - contains the source code and tests for a dex file parser. This folder contains a .project file, it can be imported directly into eclipse as a java project.
- signature-tools - This project contains the source code and tests for API signature comparison tools. The project is in Java
- tradefed-host - CTS Trade Federation, cts-tradefed for short, is the next generation test harness for CTS. cts-tradefed is built on top of the Android Trade Federation test harness.
- utils -
- vm-tests-tf - Similar to vm-tests except there are few difference files.
-
-
-
7. dalvik
-
-
- dexdump
- The "dexdump" tool is intended to mimic "objdump".
-
-
-
- dexgen
- Home of dexgen, the dex code generator project. It provides API for creating dex classes in runtime which is needed e.g. for class mocking. This solution is based on the dx tool and uses its classes extensively.
-
-
-
- dexlist
- List all methods in all concrete classes in one or more DEX files.
-
-
-
- docs
- Dalvik documentation
-
-
-
- dx
- Home of Dalvik eXchange, the thing that takes in class files and reformulates them for consumption in the VM. It also does a few other things; use "dx --help" to see a modicum of self-documentation.
-
-
-
- hit
- This directory contains program to read HPROF file specific to Android. HPROF is a profiler tool in Android. The application in this directory can be run to read a sample .hprof file in the samples directory.
-
-
-
- libdex
- This directory contains .dex file related tools.
-
-
-
- opcode-gen
- This directory contains sets of defined opcodes and instruction formats for Dalvik.
-
-
-
- tools
- This directory contains Dalvik related tools
-
-
-
- vm
-
8. developers
-
-
- 'build -
- 'demos -
- 'docs -
- 'samples -
-
9. development
-
-
- apps
-
This directory contains application that are not part of the deployed app in the OS. There are some useful application such as widget builder, etc
- BluetoothDebug - Bluetooth debugging app
- BuildWidget - Define a simple widget that shows the Wiktionary "Word of the day."
- CustomLocale - Change locale app that can be automatically called for testing purpose --> adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE en_US
- Development - Development system app
- DevelopmentSettings - Development settings system app
- Fallback - fall back activity that registers itself for common intents which may possibly not otherwise be handled.
- GestureBuilder - tool to create Gesture
- launchperf - launch performance application
- NinePatchLab -
- OBJViewer - gles and raw file viewer
- SdkSetup - Entry point for SDK SetupWizard.
- SettingInjectorSample -
- WidgetPreview - widget preview application
-
-
-
- build
-
- tools
- This directory contains a number of tools that are used as part of the build process
-
-
-
- cmds
- This directory contains the monkey tool that allows you to inject key events into an app.
-
-
-
- docs
- This directory contains copyright templates
-
-
-
- host
-
This directory contains Windows binary files for USB.
- windows - contains USB drivers for Windows
-
-
-
- ide
-
This directory contains IDE specific information/configuration. Eclipse, EMacs, IntelliJ and XCode are the IDEs supported.
- eclipse - formatter for eclipse
- emacs - plugin configuration for emacs for Android development
- intellij - Definition for IntelliJ configuration
- xcode - xcode configuration (not very familiar on what kind of configuration is this as never used xcode before)
-
-
-
- libraries
-
From the README.txt - Stereo Camera Libraries for Android. This SDK component contains static libraries for computing the depth map of a pair of stereo images. To use the libraries, simply copy them as static libraries into your project.
- stereocamera -
-
-
-
- ndk
-
This directory contains NDK (Native Development Kit) for Android. This particular directory is not build as part of the Android build process.
- platforms - contains the sources of the C runtime object files required by the Android NDK toolchains. Contains more information inside README.CRT.TXT
- samples - sample applications on using NDK
- sources -
- tests - contain script to execute all the test cases inside NDK
- tools - tool o compare headers between Bionic and NDK
-
-
-
- perftests
-
-
-
- samples
-
This directory contains Android application sample files. There are a lot of sample projects that can be used by developers.
- AccelerometerPlay - example of using the accelerometer to integrate the device's acceleration to a position using the Verlet method.
- ActionBarCompat - ActionBar sample
- Alarm - revised version of the AlarmService functionality included in the ApiDemos sample application
- AliasActivity -
- AndroidBeamDemo - shows how to use the Android Beam feature introduced in API level 14. This application must be installed on two devices that have NFC capabilities, running Android 4.0 or later.
- ApiDemos - The API Demos application includes a variety of small applications that illustrate the use of various Android APIs. It includes samples of: Notifications, Alarms, Progress Dialogs, etc
- AppNavigation - application navigation
- BackupRestore - Backup/Restore application illustrates a few different approaches that an application developer can take when integrating with the Android Backup Manager
- BasicGLSurfaceView - basic OpenGL surface view sample
- BluetoothChat - chat app using bluetooth
- BluetoothHDP - sample application that demonstrates how to communicate with a Bluetooth Health Device Profile (HDP) device
- BluetoothLeGatt -
- browseable -
- BusinessCard -
- Compass -
- ContactManager -
- ControllerSample -
- CrossCompatibility -
- CubeLiveWallpaper -
- devbytes -
- FixedGridLayout -
- HeavyWeight -
- HelloActivity -
- HelloEffects -
- Home -
- HoneycombGallery -
- JetBoy -
- KeyChainDemo -
- LunarLander -
- MultiResolution -
- MySampleRss -
- NotePad -
- Obb -
- OpenGL -
- RandomMusicPlayer -
- RenderScript -
- RSSReader -
- SampleSyncAdapter -
- SearchableDictionary -
- SimpleJNI -
- SipDemo -
- SkeletonApp -
- Snake -
- SoftKeyboard -
- SpellChecker -
- Spinner -
- SpinnerTest -
- StackWidget -
- Support4Demos -
- Support7Demos -
- Support13Demos -
- SupportAppNavigation -
- TicTacToeLib -
- TicTacToeMain -
- ToyVpn -
- training -
- TtsEngine -
- UiAutomator -
- USB -
- Vault -
- VoicemailProviderDemo -
- VoiceRecognitionService -
- WeatherListWidget -
- WiFiDirectDemo -
- WiFiDirectServiceDiscovery -
- Wiktionary -
- WiktionarySimple -
- XmlAdapters -
-
-
-
- scripts
-
Some Google App Engine specific scripts.
- app_engine_server -
- gdb -
-
-
-
- sdk
- This directory contains .properties file related to SDK, can’t figure out what exactly it is used for as there aren’t that much information inside.
-
-
-
- sdk_overlay
-
Overlay resource files that are used for different device
- frameworks -
- packages -
-
-
-
- sys-img
-
-
-
- testrunner
-
Utility to run the test cases based on Python.
- coverage -
- test_defs -
- tests -
-