Android source code structure

Source: Internet
Author: User
Android provided by Google contains the original Android target machine code, host compilation tools, and simulation environment. After the code package is decompressed, the first-level directories and files are as follows:
.
| -- Makefile (Global makefile)
| -- Bionic)
| -- Bootloader)
| -- Build (the content in the build directory is not the code used by the target, but the scripts and tools required for compilation and configuration)
| -- Dalvik (Java Virtual Machine)
| -- Development (templates and tools required for Program Development)
| -- External (some libraries used by the target machine)
| -- Frameworks (framework layer of the Application)
| -- Hardware (hardware-related Library)
| -- Kernel (source code of linux2.6)
| -- Packages (various Android applications)
| -- Prebuilt (preset scripts compiled by android on various platforms)
| -- Recovery (related to the recovery function of the target)
'-- System (some underlying libraries of Android)

The bionic directory is displayed as follows:
Bionic/
| -- Android. mk
| -- Libc
| -- Libdl
| -- Libm
| -- Libstdc ++
| -- Libthread_db
'-- Linker

Two levels of bootloader directory expansion:
Bootloader/
'-- Legacy
| -- Android. mk
| -- Readme
| -- Arch_armv6
| -- Arch_msm7k
| -- Fastboot_protocol.txt
| -- Include
| -- Libboot
| -- Libc
| -- Nandwrite
'-- Usbloader

The build directory is displayed in the following directory:
Build/
| -- Buildspec. mk. Default
| -- Cleanspec. mk
| -- Core (various files ending with MK, which are makefiles required for compilation)
| -- Envsetup. Sh
| -- Libs
| -- Target (contains two directories: Board and product, which are the files required by the target)
'-- Tools (tools required by the host during compilation, which must be compiled and generated)

The makefile in core is the real makefile required for the entire android compilation. It is referenced by the makefile in the top-level directory.
Envsetup. Sh is a script used to set the environment when running with a simulator.
The Dalvik directory is used to provide the Java Virtual Machine (JVM), the Foundation for running Android Java applications.
The Development Directory is displayed in the following directory:
Development
| -- Apps (Android Application Template)
| -- Build (compile Script Template)
| -- Cmds
| -- Data
| -- Docs
| -- Emulator (simulation related)
| -- Host (including some tools on the Windows platform)
| -- Ide
| -- PDK
| -- Samples (some sample programs)
| -- Simulator (mostly some tools on the target machine)
'-- Tools

In the emulator directory, qemud is the background program running on the target machine during qemu simulation, and skins are the mobile phone interface during simulation.
Samples contains many simple Android projects, which provide great convenience for developers to learn and develop Android programs and can be used as templates.
The external directory is expanded as follows:
External/
| -- AES
| -- APACHE-HTTP
| -- Bluez
| -- Clearsilver
| -- Snapshot
| -- Dhcpcd
| -- Dropbear
| -- Elfcopy
| -- Elfutils
| -- Emma
| -- ESD
| -- Expat
| -- Fdlibm
| -- FreeType
| -- Gdata
| -- Giflib
| -- Googleclient
| -- Icu4c
| -- Iptables
| -- Jdiff
| -- Jhead
| -- JPEG
| -- Libffi
| -- Libpcap
| -- Libpng
| -- Libxml2
| -- Netcat
| -- Netperf
| -- Neven
| -- Opencore
| -- OpenSSL
| -- Oprofile
| -- Ping
| -- PPP
| -- Protobuf
| -- Qemu
| -- Safe-IOP
| -- Skia
| -- Sonivox
| -- SQLite
| -- SREC
| -- Strace
| -- Tagsoup
| -- Tcpdump
| -- Tinyxml
| -- Tremor
| -- WebKit
| -- Wpa_supplicant
| -- Yaffs2
'-- Zlib

In external, each directory represents a module in the android target system, which may contain one or more libraries. Where:
Opencore is PV (packetvideo), which is the core of the android multimedia framework.
WebKit is the core of the android web browser.
SQLite is the core of the android database system.
OpenSSL is a Secure Socket Layer, a network protocol layer, used to provide security support for data communication.
The frameworks directory is displayed in the following directory:
Frameworks/
| -- Base
| -- OPT
'-- Policies

Frameworks is the framework of Android applications.
Hardware is a hardware-related library.
Kernel is the source code of linux2.6

The packages directory is displayed in the following two levels:
Packages/
| -- Apps
| -- Alarmclock
| -- Browser
| -- Calculator
| -- Calendar
| -- Camera
| -- Contacts
| -- Email
| -- Googlesearch
| -- Htmlviewer
| -- Im
| -- Launcher
| -- MMS
| -- Music
| -- Packageinstaller
| -- Phone
| -- Settings
| -- Soundrecorder
| -- STK
| -- Sync
| -- Updater
| '-- Voicedialer
'-- Providers
| -- Calendarprovider
| -- Contactsprovider
| -- Downloadprovider
| -- Drmprovider
| -- Googlecontactsprovider
| -- Googlesubscribedfeedsprovider
| -- Improvider
| -- Mediaprovider
'-- Telephonyprovider

Packages contains two directories, among which apps are various Android applications, and providers are some content providers (a data source in Android ).
The contents of the two directories in packages are mostly programs written in Java, and the hierarchical structure of each folder is similar.
The prebuilt directory is displayed in the following directory:
Prebuilt/
| -- Android. mk
| -- Android-arm
| -- Common
| -- Darwin-x86
| -- Linux-x86
'-- Windows

The two levels of system directory expansion are as follows:
System/
| -- Bluetooth
| -- Bluedroid
| '-- Brfpatch
| -- Core
| -- Android. mk
| -- Readme
| -- ADB
| -- Cpio
| -- Debugadh
| -- Fastboot
| -- Include (header files of each library interface)
| -- Init
| -- Libctest
| -- Libcutils
| -- Liblog
| -- Libmincrypt
| -- Libnetutils
| -- Libpixelflinger
| -- Libzipfile
| -- Logcat
| -- Logwrapper
| -- Mkbootimg
| -- Mountd
| -- Netcfg
| -- Rootdir
| -- Sh
| '-- Toolbox
| -- Extras
| -- Android. mk
| -- Latencytop
| -- Libpagemap
| -- Librank
| -- Procmem
| -- Procrank
| -- Showmap
| -- Showslab
| -- Sound
| -- Su
| -- Tests
| '-- Timeinfo
'-- WLAN
'-- Ti

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.