Difference between revisions of "Android Source Code Description"

From eLinux.org
Jump to: navigation, search
(add more stuff)
Line 516: Line 516:
 
:::This directory contains source for the Quaker games. The Quake games in this directory is optimized to run on Android
 
:::This directory contains source for the Quaker games. The Quake games in this directory is optimized to run on Android
  
safe-iop
+
::*'''safe-iop'''
This directory contains source code for the safe-iop project ( http://code.google.com/p/safe-iop/ ). This library provides a collection of (macro-based) functions for performing safe integer operations across platform and architecture with a straightforward API.
+
:::This directory contains source code for the safe-iop project ( http://code.google.com/p/safe-iop/ ). This library provides a collection of (macro-based) functions for performing safe integer operations across platform and architecture with a straightforward API.
  
skia
+
::*'''skia'''
Skia ( http://code.google.com/p/skia/ ) is a complete 2D graphic library for drawing Text, Geometries, and Images. Features include: 3x3 matrices w/ perspective, antialiasing, transparency, filters, shaders, xfermodes, maskfilters, patheffects.
+
:::Skia ( http://code.google.com/p/skia/ ) is a complete 2D graphic library for drawing Text, Geometries, and Images. Features include: 3x3 matrices w/ perspective, antialiasing, transparency, filters, shaders, xfermodes, maskfilters, patheffects.
  
sonivox
+
::*'''sonivox'''
Sonivox is an embedded audio synthesis project, it contains source code as well binary files for the music. There is quite a lot of documentation inside the /docs folder
+
:::Sonivox is an embedded audio synthesis project, it contains source code as well binary files for the music. There is quite a lot of documentation inside the /docs folder
  
speex
+
::*'''speex'''
Project website http://www.speex.org/ according to their website  
+
:::Project website http://www.speex.org/ according to their website  
  
Speex is an Open Source/Free Software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. Moreover, Speex is well-adapted to Internet applications and provides useful features that are not present in most other codecs. Finally, Speex is part of the GNU Project and is available under the revised BSD license.
+
:::Speex is an Open Source/Free Software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. Moreover, Speex is well-adapted to Internet applications and provides useful features that are not present in most other codecs. Finally, Speex is part of the GNU Project and is available under the revised BSD license.
  
sqlite
+
::*'''sqlite'''
Project website http://www.sqlite.org/ according to their website
+
:::Project website http://www.sqlite.org/ according to their website
  
SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain
+
:::SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain
  
srec
+
::*'''srec'''
SREC embedded speech recognition engine. There is a doc/ folder containing few .pdf documentation. On reading the documentation the library is from a company NUANCE PROFESSIONAL SERVICES  
+
:::SREC embedded speech recognition engine. There is a doc/ folder containing few .pdf documentation. On reading the documentation the library is from a company NUANCE PROFESSIONAL SERVICES  
  
srtp
+
::*'''srtp'''
Provides an implementation of the Secure Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), and a supporting cryptographic kernel. From the documentation it shows that this project was from Cisco
+
:::Provides an implementation of the Secure Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), and a supporting cryptographic kernel. From the documentation it shows that this project was from Cisco
  
stlport
+
::*'''stlport'''
STLport is a full ANSI C++ Standard library. Project website  
+
:::STLport is a full ANSI C++ Standard library. Project website  
https://sourceforge.net/project/showfiles.php?group_id=146814  
+
::: https://sourceforge.net/project/showfiles.php?group_id=146814  
  
strace
+
::*'''strace'''
Strace 4.0, a system call tracer for SunOS 4.x, Linux, System V release 4, Solaris 2.x and Irix 5.x. Project website - http://www.liacs.nl/~wichert/strace/  
+
:::Strace 4.0, a system call tracer for SunOS 4.x, Linux, System V release 4, Solaris 2.x and Irix 5.x. Project website - http://www.liacs.nl/~wichert/strace/  
  
svox
+
::*'''svox'''
From the documentation
+
:::From the documentation
  
SVOX Pico system is a software solution aimed at enabling Text-to-Speech (TTS) functionalities in low CPU/memory platforms. The Pico core system will be deployed as a set of libraries accessible through an API available to application developers. While benefitting from SVOX knowhow and ‘lessons learned’, SVOX Pico is an entirely new TTS
+
:::SVOX Pico system is a software solution aimed at enabling Text-to-Speech (TTS) functionalities in low CPU/memory platforms. The Pico core system will be deployed as a set of libraries accessible through an API available to application developers. While benefitting from SVOX knowhow and ‘lessons learned’, SVOX Pico is an entirely new TTS
 
system designed from scratch and coded in native ANSI-C. This document describes the Pico core system in terms of the underlying design principles, its architecture and main components, and some guidelines for developers who would like to extend Pico’s functionality.
 
system designed from scratch and coded in native ANSI-C. This document describes the Pico core system in terms of the underlying design principles, its architecture and main components, and some guidelines for developers who would like to extend Pico’s functionality.
  
http://www.svox.com/ (website redirected to Nuance Professional Services website)  
+
:::http://www.svox.com/ (website redirected to Nuance Professional Services website)  
  
 +
::*'''tagsoup'''
 +
:::Project website http://home.ccil.org/~cowan/XML/tagsoup/, from the website
  
tagsoup
+
:::This is the home page of TagSoup, a SAX-compliant parser written in Java that, instead of parsing well-formed or valid XML, parses HTML as it is found in the wild: poor, nasty and brutish, though quite often far from short. TagSoup is designed for people who have to process this stuff using some semblance of a rational application design. By providing a SAX interface, it allows standard XML tools to be applied to even the worst HTML. TagSoup also includes a command-line processor that reads HTML files and can generate either clean HTML or well-formed XML that is a close approximation to XHTML.
Project website http://home.ccil.org/~cowan/XML/tagsoup/, from the website
+
  
This is the home page of TagSoup, a SAX-compliant parser written in Java that, instead of parsing well-formed or valid XML, parses HTML as it is found in the wild: poor, nasty and brutish, though quite often far from short. TagSoup is designed for people who have to process this stuff using some semblance of a rational application design. By providing a SAX interface, it allows standard XML tools to be applied to even the worst HTML. TagSoup also includes a command-line processor that reads HTML files and can generate either clean HTML or well-formed XML that is a close approximation to XHTML.
+
::*'''tcpdump'''
 +
:::From the README file
  
tcpdump
+
:::This directory contains source code for tcpdump, a tool for network monitoring and data acquisition.  This software was originally developed by the Network Research Group at the Lawrence Berkeley National Laboratory.  The original distribution is available via anonymous ftp to ftp.ee.lbl.gov, in tcpdump.tar.Z.  More recent development is performed at tcpdump.org, http://www.tcpdump.org/
From the README file
+
  
This directory contains source code for tcpdump, a tool for network monitoring and data acquisition.  This software was originally developed by the Network Research Group at the Lawrence Berkeley National Laboratory.  The original distribution is available via anonymous ftp to ftp.ee.lbl.gov, in tcpdump.tar.Z.  More recent development is performed at tcpdump.org, http://www.tcpdump.org/
+
::*'''tinyalsa'''
 +
:::From the README file
  
tinyalsa
+
:::A small library to interface with ALSA in the Linux kernel. The aims are:
From the README file
+
:::*Provide a basic pcm and mixer API
 +
:::*If it's not absolutely needed, don't add it to the API
 +
:::*Avoid supporting complex and unnecessary operations that could be dealt with at a higher level
  
a small library to interface with ALSA in the Linux kernel
+
::*'''tinyxml'''
The aims are:
+
:::From readme.txt file
- Provide a basic pcm and mixer API
+
- If it's not absolutely needed, don't add it to the API
+
- Avoid supporting complex and unnecessary operations that could be
+
  dealt with at a higher level
+
  
tinyxml
+
:::In brief, TinyXml parses an XML document, and builds from that a Document Object Model (DOM) that can be read, modified, and saved.
From readme.txt file
+
  
In brief, TinyXml parses an XML document, and builds from that a Document Object Model (DOM) that can be read, modified, and saved.
+
::*'''tremolo
 +
:::From http://wss.co.uk/pinknoise/tremolo/
  
tremolo
+
:::Tremolo is an ARM optimised version of the Tremor lib from xiph.org. For those that don't know, the Tremor lib is an integer only library for doing Ogg Vorbis decompression.
From http://wss.co.uk/pinknoise/tremolo/
+
  
Tremolo is an ARM optimised version of the Tremor lib from xiph.org. For those that don't know, the Tremor lib is an integer only library for doing Ogg Vorbis decompression.
+
::*'''v8'''
 +
:::Javascript engine from Google
  
v8
+
::*'''valgrind'''
Javascript engine from Google
+
:::Project website http://www.valgrind.org,from the documentation:
  
valgrind
+
:::The Valgrind tool suite provides a number of debugging and profiling tools that help you make your programs faster and more correct. The most popular of these tools is called Memcheck. It can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behaviour
Project website http://www.valgrind.org,from the documentation:
+
  
The Valgrind tool suite provides a number of debugging and profiling tools that help you make your programs faster and more correct. The most popular of these tools is called Memcheck. It can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behaviour
+
::*'''webkit'''
 +
:::Project website http://www.webkit.org from the website:
  
webkit
+
:::WebKit is an open source web browser engine. WebKit is also the name of the Mac OS X system framework version of the engine that's used by Safari, Dashboard, Mail, and many other OS X applications. WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE.
Project website http://www.webkit.org from the website:
+
  
WebKit is an open source web browser engine. WebKit is also the name of the Mac OS X system framework version of the engine that's used by Safari, Dashboard, Mail, and many other OS X applications. WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE.
+
::*'''webp'''
 +
:::Project website -  http://code.google.com/speed/webp, according to README file:
  
webp
+
:::WEBP decoder: libwebpdecode.so is a simple library for decoding WEBP image files.  
Project website -  http://code.google.com/speed/webp, according to README file:
+
  
WEBP decoder: libwebpdecode.so is a simple library for decoding WEBP image files.  
+
::*'''webrtc'''
 +
:::Project website - http://www.webrtc.org/, from the website
  
webrtc
+
:::WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. Our mission: To enable rich, high quality, RTC applications to be developed in the browser via simple Javascript APIs and HTML5.
Project website - http://www.webrtc.org/, from the website
+
  
WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs.
+
::*'''wpa_supplicant'''
Our mission: To enable rich, high quality, RTC applications to be developed in the browser via simple Javascript APIs and HTML5.
+
:::From http://en.wikipedia.org/wiki/Wpa_supplicant
  
wpa_supplicant
+
:::wpa_supplicant is a free software implementation of an IEEE 802.11i supplicant for Linux, FreeBSD, NetBSD and Microsoft Windows. In addition to being a full-featured WPA2 supplicant, it also implements WPA and older wireless LAN security protocols.  
From http://en.wikipedia.org/wiki/Wpa_supplicant
+
  
wpa_supplicant is a free software implementation of an IEEE 802.11i supplicant for Linux, FreeBSD, NetBSD and Microsoft Windows. In addition to being a full-featured WPA2 supplicant, it also implements WPA and older wireless LAN security protocols.  
+
::*'''wpa_supplicant_6'''
 +
:::Looking at the files this folder contains similar project to wpa_supplicant except it could be that the version is older. One thing is obvious there is an extra project included in this folder as per the README file, the project is hostapd 0.6.x
  
wpa_supplicant_6
+
::*'''wpa_supplicant_8'''
Looking at the files this folder contains similar project to wpa_supplicant except it could be that the version is older. One thing is obvious there is an extra project included in this folder as per the README file, the project is hostapd 0.6.x
+
:::Similar to wpa_supplicant_6 but the version for hostapd is also older (??)
  
wpa_supplicant_8
+
::*'''xmlwriter'''
Similar to wpa_supplicant_6 but the version for hostapd is also older (??)
+
:::Inside this folder there is only 1 file XMLWriter.java and the author’s website is http://jheer.org
  
xmlwriter
+
::*'''yaffs2'''
Inside this folder there is only 1 file XMLWriter.java and the author’s website is http://jheer.org
+
:::Project website - http://www.yaffs.net, from the website
  
yaffs2
+
:::YAFFS (Yet Another Flash File System) is now in its second generation and provides a fast robust file system for NAND and NOR Flash. It is widely used with Linux and RTOSs, in consumer devices.
Project website - http://www.yaffs.net, from the website
+
  
YAFFS (Yet Another Flash File System) is now in its second generation and provides a fast robust file system for NAND and NOR Flash. It is widely used with Linux and RTOSs, in consumer devices.
+
::*'''zlib'''
 +
:::Project website - http://zlib.net/, from the website
  
zlib
+
:::A Massively Spiffy Yet Delicately Unobtrusive Compression Library
Project website - http://zlib.net/, from the website
+
 
+
A Massively Spiffy Yet Delicately Unobtrusive Compression Library
+

Revision as of 10:00, 29 October 2012

Repo tag version - android-4.0.3_r1


1. abi

  • cpp
The content of this directory is not clear what it is about as it contains several C++ files.

2. 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
  • 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.
  • libstdc++
  • libthread_db
  • linker
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. .

3. bootable

  • legacy/bootloader
This directory contains a sample bootloader for a fictional SoC. The sample code is to show on how to implement a bootloader for a particular SoC. The directory contains a file called fastboot_protocol.txt which outlines the Fastboot protocol implemented by vendor. There is a good detail explanation about the code in the README file
  • diskinstaller
There is no README file or any such file inside this directory that give some information about the content. Looking at the source code it seems to be code written to write image files into partition, not sure for what kind of devices.
  • 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)
  • 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
  • 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

4. 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
  • 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
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.
  • 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].
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)
fs_config - this project is part of the host tools (inside out/host/linux-86/bin)
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)
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)

5. 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
  • development
[contains script file but it does not make sense how it is used in the Android build system]
  • libs
[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]
  • tests
This directory contains Java test cases testing different kind of things, mostly on features that are available from Java application.
  • tools
This directory contains different kind of tools that are available for you to use. The tools are not used in the build process.
build - there is only 1 .mk file that is used to generate associated test package XML for the cts.
cts-api-coverage
cts-native-xml-generator
cts-reference-app-lib
device-setup
tradefed-host
utils
dex-tools - Java project that reads .dex file, this is quite useful if you need to understand the .dex file format. In the README file it is stated that Eclipse .classpath is available to make it easier for us to import, but can’t find the file anywhere.
dasm - .d file disassembler and assembler
dx-tests - according to the dx-tests.html file “It tests the capabilities of the DX converter in a black-box manner, based on the usual specifications for .class files.”
host - this folder contains test cases to test some of the host applications such as ADB, Session, etc.
signature-tools - This project contains the source code and tests for API signature comparison tools. The project is in Java
vm-tests - Dalvik VM test cases
vm-tests-tf - Similar to vm-tests except there are few difference files.

6. dalvik

  • dalvikvm
This directory contains the main Dalvik class that execute the .dex files
  • 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.
  • dexopt
Command-line DEX optimization and verification entry point.
  • docs
Dalvik documentation
  • dvz
  • 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.
  • libnativehelper
This directory contains support functions for Android's class libraries. These are VM-agnostic native functions that implement methods for system class libraries. All code here:
  • MUST not be associated with an android.* class (that code lives in frameworks/base/).
  • SHOULD be written in C rather than C++ where possible.
Some helper functions are defined in include/nativehelper/JNIHelp.h.
  • opcode-gen
This directory contains sets of defined opcodes and instruction formats for Dalvik.
  • tests
This directory contains test cases to test Dalvik op-codes.


  • tools
This directory contains Dalvik related tools
  • dexdeps -This tool dumps a list of fields and methods that a DEX file uses but does not define. When combined with a list of public APIs, it can be used to determine whether an APK is accessing fields and calling methods that it shouldn't be. It may also be useful in determining whether an application requires a certain inimum API level to execute.
  • dmtracedump - This directory contains the dmtrace tool
  • gdbjithelper - This directory contains an interesting debugging tool to debug certain behaviour that could not be catch easily. There is an instruction on how to use it inside README file
  • hprof-conv - This directory contains an application to strip Android-specific records out of hprof data, back-converting from 1.0.3 to 1.0.2. This removes some useful information, but allows Android hprof data to be handled by widely-available tools (like "jhat").
  • unit-tests
  • vm
This directory contains the core of the Dalvik code.

7. 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
  • build
  • cmds
This directory contains the monkey tool that allows you to inject key events into an app.
  • data
This directory contains network carrier information.
  • docs
This directory contains copyright templates
  • host
This directory contains Windows binary files for USB.
  • ide
This directory contains IDE specific information/configuration. Eclipse, EMacs, IntelliJ and XCode are the IDEs supported.
  • 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.
  • ndk
This directory contains NDK (Native Development Kit) for Android. This particular directory is not build as part of the Android build process.
  • pdk
This directory contains PDK (Platform Development Kit) for Android. It contains documentation rather than any code.
  • samples
This directory contains Android application sample files. There are a lot of sample projects that can be used by developers.
  • scripts
Some Google App Engine specific scripts.
  • 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
  • testrunner
Utility to run the test cases based on Python.
  • tools
  • apkcheck - This directory contains Android APK Checker utitlity.This compares the set of classes, fields, and methods used by an Android application against the published API. It identifies and reports the use of any unpublished members or methods.
  • axl - TCP and HTTP tests, the testcase is written in Python.
  • emulator
  • etc1tool
  • findunused
  • glesv2debugger - Debugger for debugging GLES2
  • hosttestlib
  • idegen - automatically generates Android IDE configurations for IntelliJ IDEA and Eclipse. Your IDE should be able to compile everything in a reasonable amount of time with no errors.
  • jdwpspy
  • labpretest - The labpretest.sh script is designed to emulate a typical automated test lab session. It puts a device into bootloader mode, reboots into bootloader mode, determines device type, erases user cache, flashes a generic userdata image, updates the bootloader image, updates the radio image, updates the system image and reboots, sets up for a monkey run and finally runs a random monkey test. It will repeat this based on an optional parameter(-i) or default to 100 times. It will detect if it is in a low battery situation and wait for it to charge again.
  • line_endings
  • mkstubs - is small tool that takes a given JAR and filters all the private stuff we don't want to expose, e.g.: remove all private members, only include a subset of classes, exclude specific classes, fields or methods.
  • templates - This directory contains Android source code templates for building Android application.
  • yuv420sp2rgb
  • tutorials
This directory contain a Notepad tutorial application development tutorial.

8. device

  • common
This directory contains gps information and also a script that allows you to extract proprietary binary files from your phone to be part of the build process.
  • generic
This directory contains the generic device configuration that is called ‘goldfish’. This is the device classification used when building the emulator.
  • google
This directory contains the Android Accessories Kit code. It contains a demokit Android app that allows you to control the ADK board. The ADK firmware can be check out here http://code.google.com/p/microbridge/. There is a good article about this http://romfont.com/2011/05/12/google%E2%80%99s-open-accessory-development-kit-on-standard-arduino-hardware/
  • sample
This directory contains a full example of writing your own Android platform shared library, without changing the Android framework. It also shows how to write JNI code for incorporating native code into the library, and a client application that uses the library. This example is ONLY for people working with the open source platform to create a system image that will be delivered on a device which will include a custom library as shown here. It can not be used to create a third party shared library, which is not currently supported in Android.
  • samsung
This directory contains Samsung specific configuration
  • ti
This directory contains TI Pandaboard configuration for build process.

9. docs

  • source.android.com
Contains tutorials, references, and miscellaneous information relating to the Android Open Source Project (AOSP). The current iteration of this site is fully static HTML (notably lacking in javascript and doxygen content), and is and/or was maintained by skyler (illustrious intern under Dan Morrill and assistant to the almighty JBQ).

10. external

  • android-mock
Android Mock is a wrapper for EasyMock (2.4) which allows for real Class mocking on an Android (Dalvik) VM. All methods on Android Mock are syntactically equivalent to EasyMock method calls, and will delegate calls to EasyMock, while performing the required transformations to avoid Dalvik VM troubles.
  • antlr
From the project website http://www.antlr.org/
ANTLR, ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages.
  • apache-harmony
Apache Harmony software is a modular Java runtime with class libraries and associated tools.
  • apache-http
HTTP API for Java from Apache
  • apache-xml
From project website http://xml.apache.org/xalan-j/
Xalan-Java is an XSLT processor for transforming XML documents into HTML, text, or other XML document types. It implements XSL Transformations (XSLT) Version 1.0 and XML Path Language (XPath) Version 1.0 and can be used from the command line, in an applet or a servlet, or as a module in other program.
  • astl
ASTL (Android STL) is a slimmed-down version of the regular C++ STL.
  • bison
This directory contains the Bison parser generator.
  • blktrace
This directory contains Block IO Tracing. blktrace was integrated into the mainline kernel between 2.6.16 and 2.6.17-rc1. The website http://brick.kernel.dk/snaps/


  • bluetooth
This directory contains project for Bluetooth communication
  • bluez - Bluetooth protocol stack for Linux
  • glib - GLib is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.
  • hcidump - Bluetooth analyzer project


  • bouncycastle
This directory contains ported version of Bouncycastle.org encryption project. The document in patches/README outlined the changes made to use it in Android
  • bsdiff
This directory contains bsdiff and bspatch project. These are tools for building and applying patches to binary files. The project can be found in http://www.daemonology.net/bsdiff/.
  • bzip2
This directory contains bzip-1.0.6 from http://www.bzip.org/. According to the RADME.android file no changes were made
  • chromium
This directory contains the Chromium project.
  • clang
This directory contains Clang project. This is a compiler front-end for the C family of languages (C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM

compiler infrastructure project.

  • collada
This directory contains code for the COLLADA project www.collada.org. COLLADA is a royalty-free XML schema that enables digital asset exchange within the interactive 3D industry
  • dbus
This directory contains D-Bus project. D-Bus is a simple system for interprocess communication and coordination.
  • dhcpcd
This is a DHCP client daemon project.
  • dnsmasq
This directory contains the Dnsmasq project - a lightweight, easy to configure DNS forwarder and DHCP server - http://thekelleys.org.uk/dnsmasq/doc.html.
  • doclava
This directory contains the Doclava project - a custom Javadoc doclet used to generate documentation. Project page for this http://code.google.com/p/doclava/
  • dropbear
This directory contains Dropbear, a smallish SSH 2 server and client.
  • e2fsprogs
Is a set of utilities for maintaining the ext2, ext3 and ext4 file systems.
  • easymock
This directory contains easymoch project - a Java library that provides an easy way to use Mock Objects in unit testing with JUnit and TestNG. Project page - http://sourceforge.net/projects/easymock/
  • elfutils
This directory contains varieties of tools and libraries that are related to ELF file.
  • embunit
This directory contains embunit - a unit testing framework for Embedded C System. Project page - http://sourceforge.net/projects/embunit/
  • emma
  • This directory contains
  • esd
  • expat
This directory contains Expat, a C library for parsing XML, written by James Clark. Expat is a stream-oriented XML parser.
  • eyes-free
  • fdlibm
This directory contains FDLIBM (Freely Distributable LIBM). It is a C math library for machines that support IEEE 754 floating-point arithmetic. In this release, only double precision is supported.
  • flac
This directory contains the source for FLAC project - Free Lossless Audio Codec - http://libzplay.sourceforge.net/FLAC.html.
  • freetype'
This directory contains code for Freetype project http://freetype.sourceforge.net/. FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output (glyph images).
  • fsck_msdos
This directory contains MS-DOS file system check code.
  • genext2fs
genext2fs generates an ext2 filesystem as a normal (non-root) user. It does not require you to mount the image file to copy files on it, nor does it require that you become the superuser to make device nodes.
  • giflib

This contains the GIF library

  • google-diff-match-patch
  • grub
This is GNU GRUB, the GRand Unified Bootloader. GRUB is intended to provide important bootloader features that are missing from typical personal computer BIOSes
  • gtest
Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Windows CE, Symbian, and etc).
  • guava
Guava-libraries are a grab bag of utility libraries published by Google as open source, including among other things the Google collections libraries.
  • harfbuzz
HarfBuzz, an OpenType Layout engine library.
  • hyphenation
Hyphen - hyphenation library to use converted TeX hyphenation patterns
  • icu4c
ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications - http://site.icu-project.org/
  • iproute2
This directory contains iproute2, it is a collection of utilities for controlling TCP / IP networking and traffic control in Linux http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2
  • ipsec-tools
This directory contains IPsec-Tools project, it is a port of KAME's IPsec utilities to the Linux-2.6 IPsec implementation. Project website http://ipsec-tools.sourceforge.net/
  • iptables
This directory contains iptables project, it is a user space application program that allows a system administrator to configure the tables provided by the Linux kernel firewall
  • javasqlite
This directory contains the Java JDBC wrapper project for SQLLite.
  • javasisst
This directory contains Javassist project. Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation simple. It is a class library for editing bytecodes in Java; it enables Java programs to define a new class at runtime and to modify a class file when the JVM loads it.
  • jdiff
This directory contains JDiff Doclet project. The JDiff doclet is used to generate a report describing the difference between two public Java APIs. Project page http://sourceforge.net/projects/javadiff
  • jhead
This directory contains the jhead project. jhead is an Exif Jpeg header manipulation tool. Project website http://www.sentex.net/~mwandel/jhead/
  • jpeg
This directory contains project for JPEG image compression and decompression.
  • jsilver
This directory contains Java wrapper project for the ClearSilver project - http://www.clearsilver.net/. ClearSilver is a fast, powerful, and language-neutral HTML template system.
  • jsr305
This directory contains the JSR 305 specification implementation. JSR 305 is an Annotations for Software Defect Detection in Java. Project website http://code.google.com/p/jsr-305/
  • junit
This directory contains JUnit project. This project is a Java testing framework, project website http://www.junit.org
  • kernel-headers
This directory contains header files for the Linux Kernel.
  • libffi
This directory contains libffi project. The libffi library provides a portable, high level programming interface to various calling conventions. This allows a programmer to

call any function specified by a call interface description at run time. Project website http://sourceware.org/libffi/

  • libgsm
This directory contains GSM 06.10 13 kbit/s RPT/LTP implementation. According to the README: “......we are publishing an implementation of the European GSM 06.10 provisional standard for full-rate speech transcoding, prI-ETS 300 036, which uses RPE/LTP (residual pulse excitation/long term prediction) coding at 13 kbit/s”
  • liblzf
This directory contains liblzf project. This project is an extremely fast compression algorithm. Project website http://software.schmorp.de/pkg/liblzf
  • libnfc-nxp
This directory contains NFC library from NXP Semiconductors.
  • libnl-headers
This directory contains network related library. [ Not sure what this project do ?? ]
  • libpcap
This directory contains source code for libpcap, a system-independent interface for user-level packet capture. libpcap provides a portable framework for low-level network monitoring. Applications include network statistics collection, security monitoring, network debugging,etc. Project website http://www.tcpdump.org
  • libphonenumber
This directory contains Google's phone number handling library. Project website http://code.google.com/p/libphonenumber/
  • libpng
This directory contains library source code for manipulating .png file format.
  • pibvpx
This directory contains source for vpx Multi-Format Codec SDK. Project website http://www.webmproject.org/
  • libxml2
This directory contains source library for manipulating XML.
  • libxslt
This directory contains source code for XSLT toolkit. This project is part of the XML toolkit from the GNOME project. Project website http://xmlsoft.org/XSLT/
  • llvm
This directory contains the LLVM project. LLVM project is a Low Level Virtual Machine, a toolkit for the construction of highly optimized compilers,optimizers, and runtime environments. There is an interesting read inside the README.android file that shows some of the issues on the reason why Google can’t push to llvm.org upstream and also some indication on how to sync to upstream.
  • lohit-fonts
This directory contains open source font project called Lohit, it is for Telugu language. The project is hosted in https://fedorahosted.org/lohit/
  • markdown
This directory contains the Markdown project. Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML). Project page https://github.com/trentm/python-markdown2
  • mesa3d
This directory contains Mesa 3D project. Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics. Project website http://www.mesa3d.org/
  • mksh
This directory contains the minimum implemention of the mkshrc application for Android.
  • mockwebserver
This directory contains a library for testing HTTP and HTTPS clients. Project page http://code.google.com/p/mockwebserver/
  • mtpd
This directory contains  ????
  • netcat
From README file:
“Netcat is a simple Unix utility which reads and writes data across network connections, using TCP or UDP protocol. It is designed to be a reliable "back-end" tool that can be used directly or easily driven by other programs and scripts. “
  • netperf
This directory contains Hewlett Packard netperf tool. According to the project page http://www.netperf.org/netperf/ - “Netperf is a benchmark that can be use to measure various aspect of networking performance.”
  • neven
There isn’t much information can be found inside this directory about the project. Reading through the source code and also the filenames it looks like a face recognition library.
  • nist-sip
This directory contains code for VOIP implementation
  • oauth
This directory contains code for the oauth authentication project code.
  • opencv
This directory contains an optimized port of OpenCV for Android
  • openssl
This directory contains OpenSSL project code for Android. The readme.android file contains information on how to port the latest version of OpenSSL
  • oprofile
According to the README file
“This is an alpha release version of oprofile, a transparent low-overhead system-wide profiler.“
  • pcre
This is a Perl-compatible regular expression library project
  • ping
This directory contains code for the ping command
  • ping6
This directory contains code for the ping command for IPv6
  • ppp
This directory contains code for the ppp protocol
  • proguard
This directory contains ProGuard code. ProGuard is a Java class file shrinker, optimizer, obfuscator, and preverifier
  • protobuf
This directory contains Protobuf code. Protobuf is a Google's data interchange format project. Link to the project page - http://code.google.com/apis/protocolbuffers/
  • qemu
This directory contains the QEMU project ( http://wiki.qemu.org/Main_Page ).
  • qemu-pc-bios
This project has the source code to build two binaries: bios.bin and vgabios-cirrus.bin, which are required for x86 emulation in the Android emulator: platform/external/qemu.
  • quake
This directory contains source for the Quaker games. The Quake games in this directory is optimized to run on Android
  • safe-iop
This directory contains source code for the safe-iop project ( http://code.google.com/p/safe-iop/ ). This library provides a collection of (macro-based) functions for performing safe integer operations across platform and architecture with a straightforward API.
  • skia
Skia ( http://code.google.com/p/skia/ ) is a complete 2D graphic library for drawing Text, Geometries, and Images. Features include: 3x3 matrices w/ perspective, antialiasing, transparency, filters, shaders, xfermodes, maskfilters, patheffects.
  • sonivox
Sonivox is an embedded audio synthesis project, it contains source code as well binary files for the music. There is quite a lot of documentation inside the /docs folder
  • speex
Project website http://www.speex.org/ according to their website
Speex is an Open Source/Free Software patent-free audio compression format designed for speech. The Speex Project aims to lower the barrier of entry for voice applications by providing a free alternative to expensive proprietary speech codecs. Moreover, Speex is well-adapted to Internet applications and provides useful features that are not present in most other codecs. Finally, Speex is part of the GNU Project and is available under the revised BSD license.
  • sqlite
Project website http://www.sqlite.org/ according to their website
SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain
  • srec
SREC embedded speech recognition engine. There is a doc/ folder containing few .pdf documentation. On reading the documentation the library is from a company NUANCE PROFESSIONAL SERVICES
  • srtp
Provides an implementation of the Secure Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), and a supporting cryptographic kernel. From the documentation it shows that this project was from Cisco
  • stlport
STLport is a full ANSI C++ Standard library. Project website
https://sourceforge.net/project/showfiles.php?group_id=146814
  • strace
Strace 4.0, a system call tracer for SunOS 4.x, Linux, System V release 4, Solaris 2.x and Irix 5.x. Project website - http://www.liacs.nl/~wichert/strace/
  • svox
From the documentation
SVOX Pico system is a software solution aimed at enabling Text-to-Speech (TTS) functionalities in low CPU/memory platforms. The Pico core system will be deployed as a set of libraries accessible through an API available to application developers. While benefitting from SVOX knowhow and ‘lessons learned’, SVOX Pico is an entirely new TTS

system designed from scratch and coded in native ANSI-C. This document describes the Pico core system in terms of the underlying design principles, its architecture and main components, and some guidelines for developers who would like to extend Pico’s functionality.

http://www.svox.com/ (website redirected to Nuance Professional Services website)
  • tagsoup
Project website http://home.ccil.org/~cowan/XML/tagsoup/, from the website
This is the home page of TagSoup, a SAX-compliant parser written in Java that, instead of parsing well-formed or valid XML, parses HTML as it is found in the wild: poor, nasty and brutish, though quite often far from short. TagSoup is designed for people who have to process this stuff using some semblance of a rational application design. By providing a SAX interface, it allows standard XML tools to be applied to even the worst HTML. TagSoup also includes a command-line processor that reads HTML files and can generate either clean HTML or well-formed XML that is a close approximation to XHTML.
  • tcpdump
From the README file
This directory contains source code for tcpdump, a tool for network monitoring and data acquisition. This software was originally developed by the Network Research Group at the Lawrence Berkeley National Laboratory. The original distribution is available via anonymous ftp to ftp.ee.lbl.gov, in tcpdump.tar.Z. More recent development is performed at tcpdump.org, http://www.tcpdump.org/
  • tinyalsa
From the README file
A small library to interface with ALSA in the Linux kernel. The aims are:
  • Provide a basic pcm and mixer API
  • If it's not absolutely needed, don't add it to the API
  • Avoid supporting complex and unnecessary operations that could be dealt with at a higher level
  • tinyxml
From readme.txt file
In brief, TinyXml parses an XML document, and builds from that a Document Object Model (DOM) that can be read, modified, and saved.
  • tremolo
From http://wss.co.uk/pinknoise/tremolo/
Tremolo is an ARM optimised version of the Tremor lib from xiph.org. For those that don't know, the Tremor lib is an integer only library for doing Ogg Vorbis decompression.
  • v8
Javascript engine from Google
  • valgrind
Project website http://www.valgrind.org,from the documentation:
The Valgrind tool suite provides a number of debugging and profiling tools that help you make your programs faster and more correct. The most popular of these tools is called Memcheck. It can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behaviour
  • webkit
Project website http://www.webkit.org from the website:
WebKit is an open source web browser engine. WebKit is also the name of the Mac OS X system framework version of the engine that's used by Safari, Dashboard, Mail, and many other OS X applications. WebKit's HTML and JavaScript code began as a branch of the KHTML and KJS libraries from KDE.
  • webp
Project website - http://code.google.com/speed/webp, according to README file:
WEBP decoder: libwebpdecode.so is a simple library for decoding WEBP image files.
  • webrtc
Project website - http://www.webrtc.org/, from the website
WebRTC is a free, open project that enables web browsers with Real-Time Communications (RTC) capabilities via simple Javascript APIs. Our mission: To enable rich, high quality, RTC applications to be developed in the browser via simple Javascript APIs and HTML5.
  • wpa_supplicant
From http://en.wikipedia.org/wiki/Wpa_supplicant
wpa_supplicant is a free software implementation of an IEEE 802.11i supplicant for Linux, FreeBSD, NetBSD and Microsoft Windows. In addition to being a full-featured WPA2 supplicant, it also implements WPA and older wireless LAN security protocols.
  • wpa_supplicant_6
Looking at the files this folder contains similar project to wpa_supplicant except it could be that the version is older. One thing is obvious there is an extra project included in this folder as per the README file, the project is hostapd 0.6.x
  • wpa_supplicant_8
Similar to wpa_supplicant_6 but the version for hostapd is also older (??)
  • xmlwriter
Inside this folder there is only 1 file XMLWriter.java and the author’s website is http://jheer.org
  • yaffs2
Project website - http://www.yaffs.net, from the website
YAFFS (Yet Another Flash File System) is now in its second generation and provides a fast robust file system for NAND and NOR Flash. It is widely used with Linux and RTOSs, in consumer devices.
  • zlib
Project website - http://zlib.net/, from the website
A Massively Spiffy Yet Delicately Unobtrusive Compression Library