Roc-rk3399-pc build Android-8.1
来自百问网嵌入式Linux wiki
编译android 8.1固件
- 下载Android-8.1 SDK
使用浏览器打开 h https://pan.baidu.com/s/1yjc9aMB-ds7Xixifgov0Gg 保存资料光盘中的 Firefly-sdk_v1 到自己的网盘中,让后进行下载。
- 安装openjdk-8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo java -version
- 安装基本依赖包
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib \
git flex bison gperf build-essential libncurses5-dev:i386 \
dpkg-dev libsdl1.2-dev libesd0-dev \
git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib \
libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev \
libgl1-mesa-dev libxml2-utils xsltproc unzip m4 \
lib32z1-dev ccache make tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev:i386 -y
- 使用FileZilla或其它软件上传下载后的Android-8.1_sdk 源码包,让后通过7z工具进行解压
7z x Roc-rk3399-pc_Android8.1_git_SDK_20190801.7z.001
编译安卓命令
- 编译之前请先执行如下命令配置好环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
- 编译内核(需要进入kernel目录下执行命令)
make ARCH=arm64 firefly_defconfig
make -j8 ARCH=arm64 rk3399-roc-pc.img
- 编译 U-Boot
make rk3399_defconfig
make ARCHV=aarch64 -j8
- 编译 Android(在安卓sdk目录下执行)
source build/envsetup.sh
lunch ROC_RK3399_PC-userdebug
make installclean
make -j8
./mkimage.sh
打包 RK 固件
- 在 Linux 下打包固件
编译完成后使用 Firefly 官方脚本即可打包所有的分区映像成可供SD卡启动的 roc-rk3399-pc固件:
./FFTools/mkupdate/mkupdate.sh -t sd
最终生成的文件是 rockdev/Image-ROC_RK3399_PC/sd_ROC_RK3399_PC_Android8.1.0_DEFAULT_190802.img
- 在 Windows 下使用wind32diskimg工具烧写镜像
烧写方法请参考 [SD卡启动]
分区映像
sd_ROC_RK3399_PC_Android8.1.0_DEFAULT_190802.img 是发布给最终用户的固件,方便升级开发板。而在实际开发中,更多的时候是修改并烧写单个分区映像文件,这样做大大节省开发时间。
下表总结了在各个编译阶段所生成的分区映像文件:
|------------------|---------------------|-----------|
| Stage | Product | Partition |
|------------------|---------------------|-----------|
| Compiling Kernel | kernel/kernel.img | kernel |
| | kernel/resource.img | resource |
|------------------|---------------------|-----------|
| Compiling U-Boot | u-boot/uboot.img | uboot |
|------------------|---------------------|-----------|
| ./mkimage.sh | boot.img | boot |
| | system.img | system |
|------------------|---------------------|-----------|
注意,执行 ./mkimage.sh 后, boot.img 和 system.img 将会被重新编译并打包到目录 out/target/product/ROC_RK3399_PC/ 下,所有生成的映像文件将会拷贝到目录 rockdev/Image-ROC_RK3399_PC/` 下。
如下是映像文件列表:
boot.img: Android 的 initramfs 映像,包含Android根目录的基础文件系统,它负责初始化和加载系统分区。 system.img: ext4 文件系统格式的 Android 文件系统分区映像。 kernel.img: 内核映像。 resource.img: Resource 映像, 包含启动图片和内核设备树。 misc.img: misc 分区映像, 负责启动模式的切换和急救模式参数的传递。 recovery.img: Recovery 模式映像。 rk3399_loader_v1.12.112.bin: Loader 文件。 uboot.img: U-Boot 映像文件。 trust.img: Arm trusted file (ATF) 映像文件。 parameter.txt: 分区布局和内核命令行。 vendor.img: TODO oem.img: TODO baseparameter.img: TODO
反馈与建议
<comments />