LV010-源码与编译
一、源码
1. 下载 Android SDK 源代码
可以参考官网的 下载 Android 源代码 | Android Open Source Project 这部分,网络不好的话也可以参考 AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 。安卓的源码有多个仓库,他们使用 repo 工具进行管理,在使用之前要安装好 git 和 repo 工具,具体的下载过程这里就不再赘述,两个都是中文文档,还是比较清楚的。
一般来说,我们用来做开发的芯片的厂家都会提供自己的安卓源码和一些 sdk,这些都是和芯片适配好的,一般都是直接在厂家的 SDK 上进一步做开发,也不用重复造轮子。
我用的开发板是野火的鲁班猫 2,用的是 RK3568,所以这里就直接看野火提供的安卓源码和相关的 SDK 就可以了,野火提供的安卓源码目前最新的是安卓 13 的,而且是百度云链接。
shell
du -sh Android13/可以看到这个压缩包目录的大小:
shell
# 查看所有文件总大小
sumu@sumu-vm:~/05_Android$ du -sh Android13/
34G Android13/
# 查看目录内文件
sumu@sumu-vm:~/05_Android/Android13$ ls
android13_rk35xx_20250106_sdk.tar.gzaa android13_rk35xx_20250106_sdk.tar.gzaf
android13_rk35xx_20250106_sdk.tar.gzab android13_rk35xx_20250106_sdk.tar.gzag
android13_rk35xx_20250106_sdk.tar.gzac android13_rk35xx_20250106_sdk.tar.gzah
android13_rk35xx_20250106_sdk.tar.gzad android13_rk35xx_20250106_sdk.tar.gzai
android13_rk35xx_20250106_sdk.tar.gzae md5sum.txt然后执行以下命令:
shell
# 下载完成后,在解压前先校验下MD5码:
md5sum -c md5sum.txt
# 解压Android源码
cat *.tar.gz* | tar -xzv解压也是要很久,解压完我们可以看一下大小:
shell
sumu@sumu-vm:~/05_Android/Android13$ du -sh android13-dev/
84G android13-dev/2. 在线查看

- Android OS 在线源代码 - https://www.androidos.net.cn,这个我看最新的是安卓 10,往后的就没了。
二、目录说明
1. 目录结构
下面是一个野火提供的基于瑞芯微安卓 13 版本的源码目录结构,其实都大差不差:
shell
sumu@sumu-vm:~/05_Android/Android13/android13-dev$ ls -alh
总用量 208K
drwxrwxr-x 35 sumu sumu 4.0K 12月 30 2024 .
drwxrwxr-x 3 sumu sumu 4.0K 12月 7 15:54 ..
lrwxrwxrwx 1 sumu sumu 19 7月 1 2024 Android.bp -> build/soong/root.bp
drwxrwxr-x 37 sumu sumu 4.0K 7月 1 2024 art
drwxrwxr-x 14 sumu sumu 4.0K 7月 1 2024 bionic
drwxrwxr-x 4 sumu sumu 4.0K 7月 1 2024 bootable
lrwxrwxrwx 1 sumu sumu 26 7月 1 2024 bootstrap.bash -> build/soong/bootstrap.bash
drwxrwxr-x 8 sumu sumu 4.0K 7月 1 2024 build
lrwxrwxrwx 1 sumu sumu 23 7月 1 2024 BUILD -> build/bazel/bazel.BUILD
-rwxrwxr-x 1 sumu sumu 11K 12月 30 2024 build.sh
-r-xr-xr-x 1 sumu sumu 14K 12月 12 2023 .classpath
drwxrwxr-x 13 sumu sumu 4.0K 7月 1 2024 cts
drwxrwxr-x 7 sumu sumu 4.0K 7月 1 2024 dalvik
drwxrwxr-x 5 sumu sumu 4.0K 7月 1 2024 developers
drwxrwxr-x 20 sumu sumu 4.0K 7月 1 2024 development
drwxrwxr-x 11 sumu sumu 4.0K 7月 2 2024 device
drwxrwxr-x 382 sumu sumu 12K 12月 31 2024 external
drwxrwxr-x 16 sumu sumu 4.0K 7月 1 2024 frameworks
drwxrwxr-x 19 sumu sumu 4.0K 8月 6 2024 hardware
-r--r--r-- 1 sumu sumu 162 7月 1 2024 javaenv.sh
drwxrwxr-x 6 sumu sumu 4.0K 12月 30 2024 kernel
drwxrwxr-x 27 sumu sumu 4.0K 1月 6 2025 kernel-5.10
drwxrwxr-x 19 sumu sumu 4.0K 7月 1 2024 libcore
drwxrwxr-x 9 sumu sumu 4.0K 7月 1 2024 libnativehelper
drwxrwxr-x 10 sumu sumu 4.0K 7月 1 2024 mkcombinedroot
-r-xr-xr-x 1 sumu sumu 11K 7月 1 2024 mkimage_ab.sh
-r-xr-xr-x 1 sumu sumu 8.4K 7月 1 2024 mkimage.sh
drwxrwxr-x 2 sumu sumu 4.0K 1月 6 2025 out
drwxrwxr-x 9 sumu sumu 4.0K 7月 1 2024 packages
drwxrwxr-x 5 sumu sumu 4.0K 7月 1 2024 pdk
drwxrwxr-x 10 sumu sumu 4.0K 7月 1 2024 platform_testing
drwxrwxr-x 32 sumu sumu 4.0K 7月 1 2024 prebuilts
-r-xr-xr-x 1 sumu sumu 519 7月 1 2024 restore_patches.sh
drwxrwxr-x 9 sumu sumu 4.0K 1月 6 2025 rkbin
drwxrwxr-x 4 sumu sumu 4.0K 7月 1 2024 rkst
drwxrwxr-x 5 sumu sumu 4.0K 7月 1 2024 RKTools
drwxrwxr-x 2 sumu sumu 4.0K 1月 6 2025 rockdev
drwxrwxr-x 20 sumu sumu 4.0K 7月 1 2024 sdk
drwxrwxr-x 46 sumu sumu 4.0K 7月 1 2024 system
drwxrwxr-x 10 sumu sumu 4.0K 7月 1 2024 test
drwxrwxr-x 4 sumu sumu 4.0K 7月 1 2024 toolchain
drwxrwxr-x 23 sumu sumu 4.0K 7月 1 2024 tools
drwxrwxr-x 27 sumu sumu 4.0K 1月 6 2025 u-boot
drwxrwxr-x 4 sumu sumu 4.0K 7月 1 2024 vendor
lrwxrwxrwx 1 sumu sumu 27 7月 1 2024 WORKSPACE -> build/bazel/bazel.WORKSPACE2. 部分目录描述
| Android 源码根目录 | 描述 |
|---|---|
| art | Art: android run time,ART 虚拟机,安卓 5.0 以后取代 dalvik 虚拟机,上层 APP 运行在虚拟机中。 |
| bionic | 包含 Android 的 C 库(如 libc),以及平台特定的系统调用实现 |
| bootable | 与启动引导相关的代码,如引导加载程序(bootloader)和内核的启动配置 |
| build | 存放系统编译规则及 generic 等基础开发包配置 |
| cts | Android 兼容性测试套件(Compatibility Test Suite)的标准和工具 |
| dalvik | Dalvik 虚拟机的实现,用于在 Android 设备上运行 Java 应用(注意:从 Android 5.0 开始,ART 逐渐取代 Dalvik) |
| developers | 开发者目录,主要包含一些可以运行的安卓示例项目 |
| development | 与应用程序开发相关的工具和库 |
| device | 包含各个设备厂商的编译与打包相关的配置,如果编译哪些内容,规格,内核版本等。 |
| external | Android 使用的开源模块和库,如 Webkit 浏览器引擎等 |
| frameworks | Android 的核心框架代码,包括 Java 和 C++语言编写的部分,是实现系统功能和应用层接口的关键 |
| hardware | 包含部分厂商开源的硬件抽象层(HAL)代码,用于与硬件设备进行交互,各个厂商 HAL 内部实现不一致,对外接口一致。 |
| kernel | linux 内核源码。 |
| libcore | Android 的 Java 核心库,如 Java 的集合、I/O、网络等功能的实现 |
| libnativehelper | 动态库,实现 JNI 库的基础 |
| out | 编译完成后代码输出在此目录 |
| packages | 存放 Android 系统的应用程序包(一些内置 apk),包括系统应用、第三方应用和输入法等 |
| pdk | Plug Development Kit 的缩写,本地开发套件,仅包含 HAL 层开发测试使用的必须组件 |
| platform_testing | 平台相关的一些测试用例 |
| prebuilts | 预编译的资源,如 x86 和 ARM 架构下的库和工具 |
| sdk | 软件开发工具包,包括模拟器、API 库和开发文档等 |
| system | 底层文件系统库、应用和组件,主要是用 C 语言编写的。包含部分系统源码和工具,如 init 进程源码,如 adb、fastboot 等工具 |
| toolchain | 工具链文件 |
| tools | 开发过程中使用的工具,如源代码管理工具、构建工具等 |
| u-boot | u-boot 源码 |
| vendor | 包含不同厂商私有部分二进制或者源码,该文件夹和 hardware 存在关联,hardware 包含对外接口,部分功能实现在 vendor 内部。 |
参考资料: