关于源码的阅读,你可以访问: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 |