要从一个初级Android开发工程师,晋级到Android高级工程师,源码阅读是不可或缺的一环。而Android源码非常复杂,涉及到很多个模块。比如Android5.1的目录结构如下:
而目录下面还有更多的文件,阅读起来非常费解。因此笔者搜集了一些资料,同时根据自身开发经验,总结了一些简单的目录说明大纲文档供大家查阅,希望能帮到大家。
Java部分
- abi 应用程序二进制入口
- art 全新的ART运行环境(5.0系统后替代Dalvik虚拟机)
- bionic 系统C库
- bootable 启动引导相关代码
- build 存放系统编译规则及generic等基础开发包配置
- cts Android兼容性测试套件标准
- dalvik dalvik虚拟机
- developers 开发者目录
- development 应用程序开发相关
- device 设备相关配置
- docs 参考文档目录
- external 开源模组相关文件
- frameworks 应用程序框架,Android系统核心部分,由Java和C++编写
- hardware 主要是硬件抽象层的代码
- libcore 核心库相关文件 libnativehelper 动态库,实现JNI库的基础
- ndk NDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码
- out 编译完成后代码输出在此目录
- packages 应用程序包,对应着系统的应用层
- pdk Plug Development Kit缩写,本地开发套件
- platform_testing 平台测试
- prebuilds x86和arm架构下预编译的一些资源
- sdk sdk和模拟器
- system 底层文件系统库、应用和组件
- toolchain 工具链文件 tools 工具文件
- Makefile 全局Makefile文件,用来定义编译规则
C/C++程序部分
系统运行库层(Native)中的 C/C++程序库的类型繁多,功能强大,C/C++程序库并不完全在一个目录中,几个常用且比较重要的C/C++程序库所在的目录位置:- /bionic/ Google开发的系统C库,以BSD许可形式开源
- /frameworks/av/media 系统媒体库
- /frameworks/native/opengl 第三方图形渲染库
- /framework/native/services/surfaceflinger 图形显示库,主要负责图形的渲染、叠加、绘制等功能
- /external/sqlite 轻量型关系数据库SQLite的C++实现。