Skip to content

LV010-源码与编译

一、源码

1. 下载 Android SDK 源代码

可以参考官网的 下载 Android 源代码 | Android Open Source Project 这部分,网络不好的话也可以参考 AOSP | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 。安卓的源码有多个仓库,他们使用 repo 工具进行管理,在使用之前要安装好 git 和 repo 工具,具体的下载过程这里就不再赘述,两个都是中文文档,还是比较清楚的。

一般来说,我们用来做开发的芯片的厂家都会提供自己的安卓源码和一些 sdk,这些都是和芯片适配好的,一般都是直接在厂家的 SDK 上进一步做开发,也不用重复造轮子。

这里可以参考:1. Android 开发 — Android 用户手册—基于 LubanCat-RK 系列板卡 文档

我用的开发板是野火的鲁班猫 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. 在线查看

image-20251207153535838

二、目录说明

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.WORKSPACE

2. 部分目录描述

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 内部。

参考资料:

【汇总】Android 源码目录、文件说明 - 悟透 - 博客园

超级详细的 android 目录说明 - Fantasy Blogs