关于源码的阅读,你可以访问:http://androidxref.com/
我们要先了解Android系统源码目录,为后期源码学习打下基础。
当然,最好是将源码下载下来。下载源码可以使用清华大学开源软件镜像站提供的Android 镜像:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
如果觉得麻烦也可以查找国内的网盘进行下载,推荐使用该百度网盘地址下载:http://pan.baidu.com/s/1ngsZs
它提供了多个Android版本的的源码下载。
| Android源码根目录(Android 10.0) | 目录类型 | 描述 | 是否常用 | ||
| 1级目录 | 2级目录 | 3级目录 | |||
| abi | 应用程序二进制接口 | ||||
| art | 全新的ART运行环境 | ||||
| bionic | 系统C库,bionic c是Android重写的c库,所以Android使用的c库也并不是传统glibc。 | ||||
| bootable | 启动引导相关代码 | ||||
| build | 存放系统编译规则及generic等基础开发包配置 | 常用 | |||
| kati | Android 7.0之后引入了ninja,并通过kati工具将makefile转化为ninja套件进行编译,用于提升编译效率。 | ||||
| soong | Android8.0之后引入了Android.bp,Android.bp也会被转化为.ninja文件,转换的工具是soong | ||||
| compatibility | |||||
| cts | Android兼容性测试套件标准 | ||||
| dalvik | 虚拟机 | ||||
| developers | 开发者目录 | ||||
| development | 应用程序开发相关 | ||||
| device | 设备相关配置 | 常用 | |||
| docs | 参考文档目录 | ||||
| external | 开源模组相关文件 | ||||
| frameworks | 存放Android SDK对外提供的API,Android系统核心部分,由Java和C++编写。 | ||||
| base | |||||
| core | android核心包 | ||||
| media | 多媒体和音频相关内容 | ||||
| graphics | 图形处理包 | ||||
| opengl | Android OpenGL 3D实现 | ||||
| location | 定位相关的内容 | ||||
| telephony | 电话相关的内容 | ||||
| wifi | 无线局域网相关内容 | ||||
| hardware | 主要是硬件抽象层的代码 | ||||
| HW_Vendor_INTF | |||||
| kernel | |||||
| libcore | 核心库相关文件 | ||||
| libnativehelper | 动态库,实现JNI库的基础 | ||||
| ndk | NDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码 | ||||
| out | out下是编译完成后生产的各种文件,比如各种系统的apk文件,这些都是即将安装到Android设备上面的 | 常用 | |||
| packages | 应用程序包。package下包含很多Android项目的源码,手机上所有可以点击的图标其实都是一个Android项目,比如录音,电话,系统设置,或者三方的一些程序(阅读器,应用商城)等等 | 常用 | |||
| pdk | Plug Development Kit 的缩写,本地开发套件 | ||||
| platform_testing | 平台测试 | ||||
| prebuilts | x86和arm架构下预编译的一些资源 | ||||
| repohooks | |||||
| sdk | sdk和模拟器 | ||||
| system | 底层文件系统库、应用和组件 | ||||
| test | |||||
| toolchain | 工具链文件 | ||||
| tools | 工具文件 | ||||
| vendor | |||||
| Makefile | 全局Makefile文件,用来定义编译规则 | ||||
Android工程目录
| MyApplication | ||||||||
| .gradle | ||||||||
| .idea | ||||||||
| app | ||||||||
| build | ||||||||
| libs | ||||||||
| src | ||||||||
| androidTest | ||||||||
| main | ||||||||
| java | ||||||||
| com.example.myapplication | java源代码包 | |||||||
| MainActivity | ||||||||
| res | ||||||||
| drawable | 图像描述文件与用户图片 | |||||||
| drawable-v24 | ||||||||
| layout | App页面的布局文件 | |||||||
| menu | ||||||||
| mipmap-xxx | 启动图标 | |||||||
| raw | ||||||||
| values | 各种常量定义文件 | |||||||
| AndroidMainfest.xml | App的运行配置文件 | |||||||
| test | ||||||||
| .gitignore | ||||||||
| app.iml | ||||||||
| build.gradle | 模块级的编译配置 | |||||||
| proguard-rules.pro | java文件的代码混淆规则 | |||||||
| gradle | ||||||||
| wrapper | ||||||||
| .gitignore | ||||||||
| build.gradle | ||||||||
| gradle.properties | 编译工程的命令行参数 | |||||||
| gradlew | ||||||||
| gradlew.bat | ||||||||
| local.properties | ||||||||
| MyApplication.iml | ||||||||
| settings.gradle | 工程级的模块编译配置 | |||||||
| External Libraries | ||||||||
| Scratches and Consoles | ||||||||