【汇总】Android源码目录、文件说明
一、说明:
源码在线预览查看网站:
阿里:http://aospxref.com/?utm_source=androidweekly.io&utm_medium=website
AndroidXRef:http://androidxref.com/
二、文件(夹)名
文件(夹)名的列,黑色加粗字体是源码根目录下的目录说明。
排序 | 文件(夹)名 | 英文说明 | 中文说明 | 备注、示例 |
A | ||||
art/ | Android Runtime,一种App运行模式,区别于传统的Dalvik虚拟机,旨在提高Android系统的流畅性 | |||
device/$project/atlas/atlas.mk | Android插件化框架,可以加入第三方的bin、apk等文件 | |||
B | ||||
bionic/ | 基础C库源代码,Android改造的C/C++库。实现libc这种底层库, 通常不需要改动 | |||
bootable/ | Android程序启动导引,适合各种bootloader的通用代码,包括一个recovery目录。硬件boot层 如fastboot 如果不做硬件开发可以直接无视 | |||
build/ | 存放系统编译规则及generic等基础开发包配置。编译用。如果对如何在AOSP 实现某个功能有疑问,如设置什么选项才能赋予root权限, 可能需要查阅代码编译流程 | |||
|- blueprint/ | 输入为.bp文件。输出为.ninja文件 | |||
|- core/ | 核心的编译规则makefile | |||
|- kati/ | kati is an experimental GNU make clone | |||
|- make/ | 以前的老的make系统 | |||
|- soong/ | 新的Build系统 | |||
|- target/ | AOSP自带的Target(模拟器)的一些makefile | |||
|- tools/ | 编译中使用的shell及python写的工具脚本 | |||
build/envsetup.sh | 编译初始化脚本 | |||
build/core/binary.mk |
定义了将asm,c,cpp,yacc,lex源代码编译为目标文件的基本规则 |
|||
build/core/base_rules.mk | 控制构建过程 | |||
build/core/definitions.mk | my-dir函数的定义 | |||
buildspec.mk | 是用户应当配置的脚本文件,模板可以使用buildspec.mk.default,放到$(TOP)下。 | |||
build/target/product/generic.mk | 中指定android系统自带的应用程序包 PRODUCT_PACKAGES += \ | |||
C | ||||
cts/ | Android兼容性测试套件标准。兼容性和平台测试相关 自己玩玩可以无视 | |||
build/core/config.mk | 定义了一些变量,例如通用的编译参数,package的后缀名等 | |||
device/<制造商>/<设备型号>/device.mk | 在Android编译系统中,通过调用m 命令编译系统时,编译系统会读取设备配置文件 |
|||
D | ||||
dalvik/ | Android Dalvik虚拟机相关内容 app运行时, 执行dex文件, 系统修改通常可以无视, 客户端岗位八股文经典题目 | |||
developers/ | Android开发者参考文档。提供一些例子代码 | |||
development/ | Android应用开发基础设施相关。一些开发与例子代码 | |||
device/ | Android支持的各种设备及相关配置。厂商设备 | |||
device/amlogic/c03ref/c03ref.mk | 中增加芯片原厂的应用程序包 PRODUCT_PACKAGES += \ | |||
E | ||||
external/ | Android中使用的外部开源库。存放的外部代码 开发不需要看 | |||
build/core/envsetup.mk | 核心变量 | |||
F | ||||
frameworks/ | 应用程序框架,Android系统核心部分,由 Java 和 C++ 编写 | |||
|- framework/av/ | 多媒体相关的native层源码目录 | |||
|- framework/base/ | 一些基础库代码,各种解析类、工具类都在这个里面 | |||
|- framework/compile/ | 编译相关的内容 | |||
|- framework/ex/ | ex文件解析器 | |||
|- framework/minikin/ | Android原生字体 | |||
|- framework/ml/ | 机器学习 | |||
|- framework/multidex/ | multi dex Loader | |||
|- framework/native/ | power、surface、input、binder等服务的native层实现源码目录 | |||
|- framework/opt/ | 一些基础软件,如:日历、网络、蓝牙 | |||
|- framework/rs/ | Render Script 可创建3D接口 | |||
|- framework/wilhelm/ | OpenSL ES/OpenMAX AL的audio | |||
build/tools/findleaves.py | 得到所有子目录下Android.mk文件的路径 | |||
G | ||||
H | ||||
hardware/ | 硬件适配接口。硬件层 | |||
I | ||||
G | ||||
K | ||||
kernel/ | Linux Kernel,不过Android默认不提供,需要单独下载,只有一个tests目录 | |||
L | ||||
libcore/ | Android Java核心类库 | |||
libnativehelper/ | Android动态库,实现JNI库的基础 | |||
M | ||||
main.mk | ||||
N | ||||
O | ||||
P | ||||
packages/ | 自带应用程序包 | |||
pdk/ | Plug Development Kit 的缩写,本地开发套件 | |||
platform_testing/ | Android平台测试程序。兼容性和平台测试相关 自己玩玩可以无视 | |||
prebuilts/ | x86和arm架构下预编译的一些资源。存放的外部代码 开发不需要看 | |||
pathmap.mk | 定义了一个列表pathmap_INCL | |||
product.mk | product.mk构造了一些命令,供product_config.mk中使用。 | build/core/ | ||
product_config.mk | build/core/ | |||
Q | ||||
R | ||||
S | ||||
sdk/ | Android的Java层sdk | |||
system/ | Android底层文件系统库、应用和组件 | |||
T | ||||
test/ | Android Vendor测试框架 | |||
toolchain/ | Android工具链文件。编译用 | |||
tools/ | Android工具文件。编译用 | |||
U | ||||
V | ||||
vendor/ | (厂商定制代码) | |||
build/core/version_defaults.mk | 检查一些跟版本相关的变量是否定义,如果未定义,则使用默认值。首先导入build_id.mk。用户应当配置build_id.mk,而不应该改动version_defaults.mk文件。 | |||
W | ||||
X | ||||
Y | ||||
Z |
三、内核源码的名字,位置以及二进制数据:
Devices | Binary location | Source location | Build configuration |
---|---|---|---|
shamu | device/moto/shamu-kernel | kernel/msm | shamu_defconfig |
fugu | device/asus/fugu-kernel | kernel/x86_64 | fugu_defconfig |
volantis | device/htc/flounder-kernel | kernel/tegra | flounder_defconfig |
hammerhead | device/lge/hammerhead-kernel | kernel/msm | hammerhead_defconfig |
flo | device/asus/flo-kernel/kernel | kernel/msm | flo_defconfig |
deb | device/asus/flo-kernel/kernel | kernel/msm | flo_defconfig |
manta | device/samsung/manta/kernel | kernel/exynos | manta_defconfig |
mako | device/lge/mako-kernel/kernel | kernel/msm | mako_defconfig |
grouper | device/asus/grouper/kernel | kernel/tegra | tegra3_android_defconfig |
tilapia | device/asus/grouper/kernel | kernel/tegra | tegra3_android_defconfig |
maguro | device/samsung/tuna/kernel | kernel/omap | tuna_defconfig |
toro | device/samsung/tuna/kernel | kernel/omap | tuna_defconfig |
panda | device/ti/panda/kernel | kernel/omap | panda_defconfig |
stingray | device/moto/wingray/kernel | kernel/tegra | stingray_defconfig |
wingray | device/moto/wingray/kernel | kernel/tegra | stingray_defconfig |
crespo | device/samsung/crespo/kernel | kernel/samsung | herring_defconfig |
crespo4g | device/samsung/crespo/kernel | kernel/samsung | herring_defconfig |
四、更详细说明
[转]超级详细的android目录说明Android 2.1 - 悟透 - 博客园
来源、说明:
https://blog.csdn.net/gzzaigcnforever/article/details/47302579
https://www.cnblogs.com/suxiaoqi/p/10388250.html
https://blog.csdn.net/yzzky/article/details/44959321
https://blog.csdn.net/averl2012/article/details/14222429 (每个文件说明)
https://blog.csdn.net/u011077027/article/details/103541542 (anroid 根目录文件夹说明)
https://www.cnblogs.com/onelikeone/p/9309238.html (编译入口文件)
https://www.cnblogs.com/ArsenalfanInECNU/p/18520933
https://blog.csdn.net/micro9981/article/details/82187638 (generic.mk)
http://doc.yonyoucloud.com/doc/wiki/project/android-source/build-kernels.html (kernel内核名字对应二进制)
https://blue-bird1.github.io/posts/aosp-3/ (目录说明)
https://blog.51cto.com/u_16248677/7387223
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)