Android 11 Build Guide for RSB-3720
Android BSP Version
- Android: 11.0.0
- Kernel: 5.10.72
Build Environment on Host
We adopt Docker as the build environment.
Get the latest advrisc/u18.04-rk3399abv10 Docker image for developing Rockchip RK3399 and rk3568 projects.
docker pull advrisc/u18.04-rk3399abv10:latest
Run Docker Example
Step 1 Run docker container:
docker run --privileged -it --name android_R11 -v /home/your-name/myandroid:/home/adv/BSP:rw advrisc/u18.04-rk3399abv10 /bin/bash
Step 2 In container, change the user:
$ sudo chown adv:adv BSP
Getting Android Source Code
$ cd ~/BSP
$ mkdir bin
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ./bin/repo
$ mkdir imx8_android_R11
$ cd imx8_android_R11
$ git config --global user.name "Your Name"
$ git config --global user.email you@example.com
$ git config --global http.postBuffer 52428800000
$ git config --global http.maxRequestBuffer 100M
$ git config --global core.compression 0
$ ../bin/repo init -u https://dev.azure.com/AIM-Linux/RISC-IMX-Android11/_git/android-manifest -b android-11.0.0_2.6.0 -m default.xml
------If you want to get the latest code, please use default.xml------
$ ~/bin/repo sync
Getting Prebuilts (must download)
# Exit docker and copy the file to /home/your-name/myandroid
$ cp prebuilts.tar.gz /home/your-name/myandroid/imx8_android_R11/android
# In container and Unzip file
$ docker attach android_R11
$ tar zxvf ~/BSP/imx8_android_R11/android/prebuilts.tar.gz
Compile All
i.MX Android platform needs some preparation for the first time when building images.
a. Download the tool chain for the A-profile architecture from gcc-arm-8.3. It is recommended to use the 8.3 version. You can download gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz (for bare-metal programs) or gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz (also supports application programs).
b. Decompress the file to a local path (e.g., /opt/) and export AARCH64_GCC_CROSS_COMPILE:
# if "gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz" is used
$ sudo tar -xvJf gcc-arm-8.3-2019.03-x86_64-aarch64-elf.tar.xz -C /opt
$ export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-elf/bin/aarch64-elf-
# if "gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz" is used
$ sudo tar -xvJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz -C /opt
$ export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-
Set the clang version for compiling Linux kernel:
$ sudo git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 /opt/prebuilt-android-clang -b master-kernel-build-2021
$ cd /opt/prebuilt-android-clang
$ sudo git checkout bceb7274dda5bb587a5473058bd9f52e678dde98
$ export CLANG_PATH=/opt/prebuilt-android-clang
The export commands above can be added to /etc/profile so that AARCH64_GCC_CROSS_COMPILE and CLANG_PATH are set automatically on boot.
Build U-Boot
$ ./imx-make.sh bootloader -j8
Build Kernel
$ ./imx-make.sh kernel -j8
Build ROM-5722 Android project:
$ source build/envsetup.sh
$ lunch rom5722_a1-userdebug
$ ./imx-make.sh -j12
All Images Output Path
out/target/product/${Project_Name}/
Common image files:
boot.img
dtbo-imx8mp.img
partition-table-28GB.img
partition-table.img
super.img
u-boot-imx8mp.imx
vbmeta.img
vbmeta-imx8mp.img
vendor_boot.img
vendor.img
How to Flash Images to SD Card
$ cd out/target/product/${Project_Name}/
$ sudo ./imx-sdcard-partition.sh -f imx8mp /dev/sdx
How to Flash Images to eMMC
# Note: put the image folder and script (imx-emmc-partition.sh) into /data folder (in the system)
$ sudo ./imx-emmc-partition.sh -f imx8mp /dev/block/mmcblk2