Android Framework开发编译系统

632 阅读3分钟

完成了Android Framework开发环境搭建接下来进行系统的编译环节。

Android源码选择

一 、获取Android10源码(本源码仅适用于RK3399开发板)

百度网盘链接:pan.baidu.com/s/1UmS8L3s9… 提取码:6666

将获取到的源码解压到上面配置的aosp_src文件夹中,使用如下指令。git版本需要时v2.0.0以上。

tar xf rk3399-android-10.git-20210201.tgz
cd rk3399-android-10
# 将代码切换到最后一次提交的状态
git checkout --recurse-submodules -- .

二、编译并程成Image文件

2.0 进入配好编译环境的docker容器内

sudo docker exec -it build_android bash
su dev
cd /aosp_src/rk3399/rk3399-android-10/

2.1 全量编译

# 如果需要包含google apps,需要设置一个环境变量再编译
export INSTALL_GAPPS_FOR_TESTING=yes

./build-nanopc-t4.sh -F -M

2.1.1 编译 U-Boot

cd u-boot
make rk3399_defconfig
make ARCHV=aarch64 -j16

2.1.2 编译内核

cd kernel
make ARCH=arm64 lb3399_android_defconfig
make ARCH=arm64 rk3399-epoch-android.img -j16

打包成统一固件

2.2 编译OTA Packages

如果需要A/B (Seamless) System Updates的支持,需要先进行以下定制:

  • a) 搭建自己的更新服务器
  • b) 定制packages/apps/Updater使其适配自己的更新服务
    定制完成后,使用快速编译脚本参数-O或--ota可编译OTA Packages,如下所示:
./build-nanopc-t4.sh -F -O -M

编译成功完成后,OTA更新相关的包位于目录 rockdev/otapackage/ ,请保留此目录。
当完成了某些修改后使用参数-O 再次编译将会生成ota-update-XXXXXXXX.zip,这是增量更新包。
OTA Packages依赖BUILD_NUMBER, 只有它有变化才会生成增量更新包,缺省的生成规则请查看build-nanopc-t4.sh。
修改 device/rockchip/rk3399/nanopc-t4/BoardConfig.mk

BOARD_USES_AB_IMAGE := false

可禁用 A/B 特性,然后重新编译(包括u-boot和android)。

2.3 更新系统为自已编译的Image

编译完成后,image文件会存放在Android10源代码目录的 rockdev/Image-nanopc_t4/ 子目录下,参考以下步骤更新到 NanoPi-M4B上:

  1. 将 EFlasher 启动SD卡 通过读卡器插入电脑,电脑上的Ubuntu系统会自动挂载 SD卡的分区;
  2. 我们需要将 rockdev/Image-nanopc_t4/ 子目录下的所有文件,拷贝并覆盖到 SD卡 friendlydesktop-arm64 目录下覆盖所有内容即可;
  3. 将SD卡插入NanoPi-M4B,重新烧写Andorid系统即可;
    也可参考这个github仓库的方法来更新:sd-fuse_rk3399
    烧写Android 10时EFlasher 需要 v1.3 或以上版本,通过Type-C烧写时请使用rockchip提供的工具AndroidTool v2.71 或Linux_Upgrade_Tool v1.49 。