Android BSP User Guide for RK3399 Series Android12
1. Introduction
This document provides comprehensive instructions for building and deploying Android BSP for RK3399 series platforms running 12.0. The guide covers environment setup, source code acquisition, building processes for multiple processors platforms, and deployment methods.
2. Android BSP Version
- OS: Android 12.0
- Kernel: 4.19.232
3. Build Environment on Host
Currently, we adopt Docker as build environment.
You can get the latest version of advrisc/u18.04-rk3399abv10 Docker image for developing Rockchip RK3399 projects.
3.1 Docker Installation Commands
$ sudo apt-get update
$ sudo apt-get install -y qemu-user-static
$ sudo apt-get install -y live-build
$ sudo docker pull advrisc/u18.04-rk3399abv10
3.2 Run Docker Example
- Step 1: Run Docker Container
Assume your working directory ishome/bsp/myLinuxand the Docker container name isrk3399_android_s12.
Replacehome/bsp/myLinuxandrk3399_android_s12with the actual ones based on your environment.
$ export WORKSPACE="home/bsp/myLinux"
$ export CONTAINER_NAME="rk3399_android_s12"
$ sudo docker run -it --name ${CONTAINER_NAME} -v ${WORKSPACE}:/home/adv/BSP:rw --privileged advrisc/u18.04-rk3399abv10 /bin/bash
- Step 2: Change User in Container
adv@7cc0fa834366:~$ sudo chown adv:adv -R BSP
-
Step 3: Install build dependencies in Container
- Install live build
adv@7cc0fa834366:~$ cd ~
adv@7cc0fa834366:~$ git clone https://salsa.debian.org/live-team/live-build.git --depth 1 -b debian/1%20230131
adv@7cc0fa834366:~$ cd live-build
adv@7cc0fa834366:~$ rm -rf manpages/po/
adv@7cc0fa834366:~$ sudo make install -j8
adv@7cc0fa834366:~$ cd ~
adv@7cc0fa834366:~$ rm -rf live-build- Install qemu and binfmts
adv@7cc0fa834366:~$ sudo apt-get update
adv@7cc0fa834366:~$ sudo apt-get install binfmt-support qemu-user-static --reinstall
adv@7cc0fa834366:~$ sudo update-binfmts --enable qemu-aarch64- Install gettext
adv@7cc0fa834366:~$ sudo apt-get update
adv@7cc0fa834366:~$ sudo apt-get install gettext -y
4. Getting Android Source Code
4.1 Full SDK
$ cd ~/BSP
$ sudo git clone https://github.com/ADVANTECH-Rockchip/repo.git
$ mkdir rk3399_android_S12
$ cd rk3399_android_S12
$ 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
$ ../repo/repo init -u https://kag-sw.visualstudio.com/RK3399-Android/_git/android-s12-manifest -b rk3399-androidS12 -m default.xml
$ ../repo/repo sync -c -f --no-clone-bundle -j`nproc`
4.2 Getting Prebuilts (must download)
Baidu: prebuilts and external Key: 1234
$ exit
$ cp prebuilts.tar.gz /home/your-name/myandroid/rk3399_android_S12/android
$ cp external.tar.gz /home/your-name/myandroid/rk3399_android_S12/android
$ docker attach rk3399_android_s12
$ tar zxvf ~/BSP/rk3399_android_S12/android/prebuilts.tar.gz
$ tar zxvf ~/BSP/rk3399_android_S12/android/external.tar.gz
5. Building
5.1 Compile all
- Build RSB-3710 project
$ source build/envsetup.sh;lunch rsb3710_Android12-userdebug;
$ ./build.sh -AUCKu
5.2 Build U-boot
Build RSB-3710 U-boot
$ ./make.sh rk3399_rsb3710a2_2G
5.3 Build Kernel
Build RSB-3710 Kernel
$ cd kernel-4.19
$ make ARCH=arm64 rk3399_adv_defconfig
$ make ARCH=arm64 rk3399-rsb3710-a2.img -j12
5.4 Build Android
Build RSB-3710 Android
$ source build/envsetup.sh;lunch rsb3710_Android12-userdebug;
$ ./build.sh -A
All image in rockdev/Image-/
The common image files are listed below:
MiniLoaderAll.bin
baseparameter.img
boot-debug.img
boot.img
config.cfg
dtbo.img
misc.img
parameter.txt
pcba_small_misc.img
pcba_whole_misc.img
recovery.img
resource.img
super.img
uboot.img
update.img
vbmeta.img
6. Update Images
1._Using_AndroidToool.
There is no limitation by this way.
2._Using_storage(such sd_or_USB_disk)with_update.zip_in_it.
There are some limitations:
(1) The device must be able to boot up to Android system. (2) Only update images from the same OS, eg: Android upgrade to Android. (3) Using update.zip to upgrade.
3._Using_bootup_sd_disk made_by_SDDiskTool.
(1) Only update images from the same OS, eg: Android upgrade to Android. (2) Using update.img to upgrade.
7. Summary
7.1 Supported Hardware Platforms
- RSB-3710: RSB-3710 Single Board Computer
7.2 System Requirements
- Docker environment with
advrisc/u18.04-rk3399abv10image - Ubuntu 18.04 base system
- BSP tarball from our released BSP
- Build tools and dependencies
- Sufficient disk space for source code and build artifacts
- Internet connection for package installation
- Target processors (RSB-3710)
7.3 Build Workflow Summary
- Environment Setup → Docker + Ubuntu 18.04
- Source Acquisition → BSP tarball or Full SDK
- Project Selection → Choose target processors platform
- Component Build → U-boot → Kernel → (Recovery)* → (Debian)*
- Image Generation → Firmware packaging → (Update image)*
- Deployment → AndroidTool, SD/USB storage, or SDDiskTool
Components marked with asterisk () are not supported in BSP tarball mode.
7.4 Development Modes
7.4.1 BSP Tarball Mode (Limited)
- Use Case: Quick U-boot and kernel development
- Advantages: Fast setup, smaller download size
- Limitations: Cannot build recovery, debian, or update images
The BSP tarball is designed for fast development of uboot and kernel components. However, it has some limitations.
- ✅ Supported: U-boot building
- ✅ Supported: Kernel building
- ❌ NOT Supported: Recovery building
- ❌ NOT Supported: Debian building
- ❌ NOT Supported: Update image building
7.4.2 Full SDK Mode (Complete)
- Use Case: Complete system development and customization
- Advantages: Full build capability, all components supported
- Requirements: Contact PM for access