在之前的文章中介绍了一下Android系统架构,对于Android系统架构每一层,Android源码结构中都有相关目录与之对应。下图展示了在Android源码一级目录中,各框架层和部分目录的对应关系:

android源码 system目录下 android源码目录结构_头文件


android源码 system目录下 android源码目录结构_android_02


对应关系:

android源码 system目录下 android源码目录结构_头文件_03


android源码目录结构:

Android 5.1
|-- Makefile
|-- abi
|-- art
|-- bionic (bionic C库)
|-- bootable (启动引导相关代码)
|-- build (存放系统编译规则及generic等基础开发包配置)
|-- cts (Android兼容性测试套件标准)
|-- dalvik (dalvik JAVA虚拟机)
|-- developers
|-- development (应用程序开发相关)
|-- device
|-- docs
|-- external (android使用的一些开源的模组)
|-- frameworks (核心框架——java及C++语言)
|-- hardware (部分厂家开源的硬解适配层HAL代码)
|-- kernel
|-- libcore
|-- libnativehelper
|-- ndk
|-- out (编译完成后的代码输出与此目录)
|-- packages (应用程序包)
|-- pdk
|-- prebuilts (x86和arm架构下预编译的一些资源)
|-- sdk (sdk及模拟器)
|-- system (底层文件系统库、应用及组件——C语言)
|-- tools
`-- vendor (厂商定制代码)

bionic 目录
|-- benchmarks
|-- libc (C库)
| |-- arch-arm (ARM架构,包含系统调用汇编实现)
| |-- ...
| |-- bionic (由C实现的功能,架构无关)
| |-- dns
| |-- include (头文件)
| |-- kernel (Linux内核中的一些头文件)
| |-- private (?一些私有的头文件)
| |-- stdio (stdio实现)
| |-- tools (几个工具)
| |-- tzcode (时区相关代码)
| |-- upstream-dlmalloc
| |-- upstream-freebsd
| |-- upstream-netbsd
| |-- upstream-openbsd
| `-- zoneinfo (时区信息)
|-- libdl (libdl实现,dl是动态链接,提供访问动态链接库的功能)
|-- libm (libm数学库的实现,)
|-- libstdc++ (libstdc++ C++实现库)
|-- linker (动态链接器)
`-- test

bootable 目录
|-- bootloader (适合各种bootloader的通用代码)
| |-- legacy (估计不能直接使用,可以参考)
| `-- lk
`-- recovery (系统恢复相关)
| |-- edify (升级脚本使用的edify脚本语言)
| |-- etc (init.rc恢复脚本)
| |-- minui (一个简单的UI)
| |-- minzip (一个简单的压缩工具)
| |-- mtdutils (mtd工具)
| |-- res (资源)
| |-- tools (工具)
| | `-- ota (OTA Over The Air Updates升级工具)
| `-- updater (升级器)

build目录
|-- core (核心编译规则)
|-- libs 
| `-- host (主机端库,有android “cp”功能替换)
|-- target (目标机编译对象)
| |-- board (开发平台)
| |-- product (开发平台对应的编译规则)
`-- tools (编译中主机使用的工具及脚本)


dalvik目录 dalvik虚拟机
|-- dexdump (dex反汇编)
|-- dexgen
|-- dexlist (List all methods in all concrete classes in a DEX file.)
|-- docs (文档)
|-- dx (dx工具,将多个java转换为dex)
|-- hit (?java语言写成)
|-- opcode-gen
|-- tools (工具)
`-- vm (虚拟机实现)

development 目录 (开发者需要的一些例程及工具)
|-- apps (一些核心应用程序)
| |-- BluetoothDebug (蓝牙调试程序)
| |-- CustomLocale (自定义区域设置)
| |-- Development (开发)
| |-- Fallback (和语言相关的一个程序)
| |-- FontLab (字库)
| |-- GestureBuilder (手势动作)
| |-- NinePatchLab (?)
| |-- OBJViewer (OBJ查看器)
| |-- SdkSetup (SDK安装器)
| |-- SpareParts (高级设置)
| |-- Term (远程登录)
| `-- launchperf (?)
|-- build (编译脚本模板)
|-- cmds (有个monkey工具)
|-- docs (文档)
|-- host (主机端USB驱动等)
|-- ide (集成开发环境)
|-- libraries
|-- ndk (本地开发套件——c语言开发套件)
|-- samples (例程)
| |-- AliasActivity (?)
| |-- ApiDemos (API演示程序)
| |-- BluetoothChat (蓝牙聊天)
| |-- BrowserPlugin (浏览器插件)
| |-- BusinessCard (商业卡)
| |-- Compass (指南针)
| |-- ContactManager (联系人管理器)
| |-- CubeLiveWallpaper (动态壁纸的一个简单例程)
| |-- FixedGridLayout (像是布局)
| |-- GlobalTime (全球时间)
| |-- HelloActivity (Hello)
| |-- Home (Home)
| |-- JetBoy (jetBoy游戏)
| |-- LunarLander (貌似又是一个游戏)
| |-- MailSync (邮件同步)
| |-- MultiResolution (多分辨率)
| |-- MySampleRss (RSS)
| |-- NotePad (记事本)
| |-- RSSReader (RSS阅读器)
| |-- SearchableDictionary (目录搜索)
| |-- SimpleJNI (JNI例程)
| |-- SkeletonApp (空壳APP)
| |-- Snake (snake程序)
| |-- SoftKeyboard (软键盘)
| |-- Wiktionary (?维基)
| `-- WiktionarySimple(?维基例程)
|-- scripts (脚本)
|-- sdk (sdk配置)
|-- sdk_overlay
|-- sys-img
|-- testrunner (?测试用)
|-- tools (一些工具)
`-- tutorials

external 目录
|-- apache-http (网页服务器)
|-- bison (自动生成语法分析器,将无关文法转换成C、C++)
|-- blktrace (blktrace is a block layer IO tracing mechanism)
|-- bluetooth (蓝牙相关、协议栈)
|-- bsdiff (diff工具)
|-- bzip2 (压缩工具)
|-- dhcpcd (DHCP服务)
|-- e2fsprogs (EXT2文件系统工具)
|-- elfcopy (复制ELF的工具)
|-- elfutils (ELF工具)
|-- embunit (Embedded Unit Project)
|-- emma (java代码覆盖率统计工具)
|-- esd (Enlightened Sound Daemon,将多种音频流混合在一个设备上播放)
|-- expat (Expat is a stream-oriented XML parser.)
|-- fdlibm (FDLIBM (Freely Distributable LIBM))