Skip to main content

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