|– Makefile (全局Makefile文件,用来定义编译规则)
|– abi (应用程序二进制接口)
|– art (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 (动态库,实现JNI库的基础)
|– ndk (NDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码)
|– out (编译完成后的代码输出在此目录)
|– packages (应用程序包)
|– pdk (Plug Development Kit 的缩写,本地开发套件)
|– prebuilts (x86和arm架构下预编译的一些资源)
|– sdk (sdk及模拟器)
|– system (底层文件系统库、应用及组件——C语言)
|– tools (工具文件)
|– toolchain(工具链文件)
|– vendor (厂商定制代码)
应用层位于整个Android系统的最上层,开发者开发的应用程序以及系统内置的应用程序都位于应用层。源码根目录中的packages目录对应着系统应用层。
|– apps (核心应用程序)
|– experimental (第三方应用程序)
|– inputmethods (输入法目录)
|– providers (内容提供者目录)
|– screensavers (屏幕保护)
|– services (通信服务)
|– wallpapers (墙纸)
从目录结构可以发现,packages目录存放着系统核心应用程序、第三方的应用程序和输入法等等,这些应用都是运行在系统应用层的,因此packages目录对应着系统的应用层。
应用框架层是系统的核心部分,一方面向上提供接口给应用层调用,另一方面向下与C/C++程序库以及硬件抽象层等进行衔接。 应用框架层的主要实现代码在/frameworks/base和/frameworks/av目录下。
|– av(多媒体框架)
|– base(Android源码的主要核心目录)
|– compile(编译相关)
|– ex(文件解析器)
|– hardware(硬件适配接口)
|– layoutlib(布局相关)
|– minikin(Android原生字体,连体字效果)
|– ml(机器学习)
|– multidex(多dex加载器)
|– native(native实现)
|– opt(一些软件)
|– rs(Render Script,可创建3D接口)
|– support(framework支持文件)
|– wilhelm(基于Khronos的OpenSL ES/OpenMAX AL的audio/multimedia实现)
|– apct-tests(性能优化测试)
|– api(android应用框架层声明类、属性和资源)
|– cmds(android系统启动时用到的commands)
|– core(framework的核心框架组件)
|– data(android下的资源(字体、声音、视频、软盘等))
|– docs(android项目说明)
|– drm(实现权限管理,数字内容解密等模块的工作)
|– graphics(图像渲染模块)
|– keystore(秘钥库)
|– libs(库信息(界面、存储、USB))
|– location(位置信息)
|– media(手机媒体管理(音频、视频等))
|– native(本地方法实现(传感器、输入、界面、窗体))
|– nfc-extras(近场通讯)
|– obex(蓝牙)
|– opengl(2D和3D图形绘制)
|– packages(框架层的实现(界面、服务、存储))
|– proto(协议框架)
|– rs(资源框架)
|– samples(例子程序)
|– sax(xml解析器)
|– services(各种服务程序)
|– telecomm(telecomm通信框架)
|– telephony(电话通讯框架)
|– tests(各种测试)
|– vr(虚拟现实相关)
|– wifi(wifi模块)
/frameworks/base/core/java/android/view/View.java
/frameworks/base/core/java/android/app/Activity
/frameworks/base/graphics/java/android/graphics/
客制化改动频繁的目录有:
/frameworks/base/services/core/java/com/android/server/am
/frameworks/base/services/core/java/com/android/server/pm
/frameworks/base/services/core/java/com/android/server/policy
/frameworks/base/services/core/java/com/android/server/power