编译Android12源码
1. 简单描述
- 基于讯为电子rk3568教程
2. 准备资料
- rk_android12.0_sdk_20220720.tar.gz
3. 编译Android12
- 解压
tar -vxf rk_android12.0_sdk_20220720.tar.gz
- 设置屏幕配置
rk_android12.0_sdk/kernel-4.19/arch/arm64/boot/dts/rockchip/topeet_screen_choose.dtsi
- 整体编译 Android 固件
source javaenv.sh
java -version
- 使能编译环境
source build/envsetup.sh
lunch rk3568_s-userdebug
- 开始整体编译
./build.sh -AUCKu
- 单独编译u-boot (方法一)
./build.sh -U
-
编译完成后在 u-boot 目录会生成 rk356x_spl_loader_v1.13.112.bin 文件、uboot.img
文件、 resource.img 三个镜像文件 -
同 时 编 译 成 功 后 会 将 rk356x_spl_loader_v1.13.112.bin 、 uboot.img 拷 贝
到 rockdev/Image-rk3568_s 目录下,rk356x_spl_loader_v1.13.112 会改名为
MiniLoaderAll.bin。 MiniLoaderAll.bin 也就是一级 loader,只需要将 MiniLoaderAll.bin 和 uboot.img 烧写到开发板即 可更新 uboot。
- 单独编译u-boot (方法二)
cd u-boot/
./make.sh rk3568
- 这样编译后会在 uboot 目录下生成 uboot.img 和 rk356x_spl_loader_v1.13.112.bin,但是不会 拷 贝 到 rockdev/Image-rk3568_s 下 面 , 所 以 需 要 烧 写 uboot 目 录 下 的 uboot.img 和rk356x_spl_loader_v1.13.112.bin, 烧 写 时 将 rk356x_spl_loader_v1.13.112.bin 重 命 名 为MiniLoaderAll.bin,再烧写。
- 编译 Android 内核(很慢)
./build.sh -CKA
编译后会在 rockdev/Image-rk3568_s 目录下生成 boot.img,boot.img 为内核镜像。boot.img
镜像里面包含了设备树镜像。所以烧写 boot.img
- 编译 Android 内核(快)
make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang
LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld rockchip_defconfig
android-11.config && make ARCH=arm64 CC=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/clang LD=../prebuilts/clang/host/linux-x86/clang-r416183b/bin/ld.lld BOOT_IMG=../rockdev/Image-rk3568_s/boot.img rk3568-evb1-ddr4-v10.img
./makekernel.sh
- 编译 Android 文件系统
vim build.sh
:set number!
# make installclean
./build.sh -A
各种镜像解释如下:
- boot.img: 包含 kernel.img 和 resource.img 镜像文件
- boot-debug.img: 与 boot.img 的差别是 user 固件可以烧写这个 boot.img 进行
root权限操作 - config.cfg: 烧写工具的配置文件,可以直接导入烧写工具显示需要烧写的选项。
- MiniLoaderAll.bin: 包含一级 loader。
- misc.img: 包含 recovery-wipe 开机标识信息,烧写后会进行 recovery。
- parameter.txt: 包含分区信息。
- pcba_small_misc.img : 包含 pcba 开机标识信息,烧写后会进入简易版 pcba 模式。
- pcba_whole_misc.img: 包含 pcba 开机标识信息,烧写后会进入完整版 pcba 模式
- recovery.img: 包含 recovery-ramdis、 kernel、 dtb
- super.img: 包含 odm、 product、 vendor、 system、 system_ext 分区内容。
- trust.img: 包含 BL31、 BL32 RK3566/RK3568 没有生成这个固件, 不需要烧写
- uboot.img: 包含 uboot 固件
- vbmeta.img: 包含 avb 校验信息, 用于 AVB 校验
- update.img: 包含以上需要烧写的 img 文件, 可以用于工具直接烧写整个固件包。
- 编译 Android 模块
再安卓目录下运行以下指令,把mm添加到环境中
source javaenv.sh
source build/envsetup.sh
lunch rk3568_s-userdebug
ls ~/Android/rk_android12.0_sdk/out/target/product/rk3568_s/vendor/lib/hw/audio.primary.rk30board.so
- 打包 update.img
./build.sh -u