Building Android Source Code

Preperations

Building

Note

Before you start to build, make sure you have done all the Preperations listed above.

android 10.0:

Build U-boot:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd u-boot
$ make mrproper
$ ./make.sh kedge

Build kernel:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd kernel
$ make ARCH=arm64 kedge_defconfig android-10.config rk3399.config
$ make ARCH=arm64 rk3399-khadas-edge-android.img -jN

Build android:

1
2
3
4
5
6
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399_Android10-userdebug
$ make installclean
$ make -jN
$ ./mkimage.sh
Note

Replace ‘N’ as the number you want when you run ‘make -jN

After executing./mkimage.sh, generate a complete firmware package in the rockdev/Image-xxx/directory (xxx is the product name of the specific lunch)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
rockdev/Image-xxx/
├── MiniLoaderAll.bin
├── boot.img
├── dtbo.img
├── kernel.img
├── misc.img
├── oem.img
├── parameter.txt
├── pcba_small_misc.img
├── pcba_whole_misc.img
├── recovery.img
├── resource.img
├── system.img
├── trust.img
├── uboot.img
├── update.img
├── vbmeta.img
├── super.img
└── vendor.img

Packing update.img:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399_Android10-userdebug
$ ./pack_image.sh

android 9.0:

Build U-boot:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd u-boot
$ make mrproper
$ ./make.sh kedge

Build kernel:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd kernel
$ make ARCH=arm64 kedge_defconfig -jN
$ make ARCH=arm64 rk3399-khadas-edge-android.img -jN

Build android:

1
2
3
4
5
6
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399-userdebug
$ make installclean
$ make -jN
$ ./mkimage.sh
Note

Replace ‘N’ as the number you want when you run ‘make -jN

After executing./mkimage.sh, generate a complete firmware package in the rockdev/Image-xxx/directory (xxx is the product name of the specific lunch)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rockdev/Image-xxx/
├── MiniLoaderAll.bin
├── boot.img
├── dtbo.img
├── kernel.img
├── misc.img
├── oem.img
├── parameter.txt
├── pcba_small_misc.img
├── pcba_whole_misc.img
├── recovery.img
├── resource.img
├── system.img
├── trust.img
├── uboot.img
├── update.img
├── vbmeta.img
└── vendor.img

Packing update.img:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399-userdebug
$ ./pack_image.sh

android 7.1:

Build U-boot:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd uboot
$ make kedge_defconfig
$ make ARCHV=aarch64

Build kernel:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ cd kernel
$ make ARCH=arm64 kedge_defconfig -jN
$ make ARCH=arm64 rk3399-khadas-edge-android.img -jN

Build android:

1
2
3
4
5
6
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399_all-userdebug
$ make installclean
$ make -jN
$ ./mkimage.sh
Note

Replace ‘N’ as the number you want when you run ‘make -jN

After executing./mkimage.sh, generate a complete firmware package in the rockdev/Image-xxx/directory (xxx is the product name of the specific lunch)

1
2
3
4
5
6
7
8
9
10
11
rockdev/Image-xxx/
├── boot.img
├── kernel.img
├── misc.img
├── parameter.txt
├── recovery.img
├── resource.img
├── RK3399MiniLoaderAll.bin
├── system.img
├── trust.img
└── uboot.img

Packing update.img:

1
2
3
4
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch rk3399_all-userdebug
$ ./pack_image.sh

See Also