{{indexmenu_n>15}}
====== VIM2 Build Android ======
===== Preparations =====
* [[http://source.android.com/source/initializing.html|Establishing a Build Environment]]
* [[/products/sbc/vim2/development/android/download-android-source-code|Downloading the Android Source]]
* [[/products/sbc/vim2/development/android/install-toolchains|Install Toolchains for the Amlogic Platform]]
===== Building =====
Before you start to build, make sure you have done all the ''Preparations'' listed above.
==== Build U-Boot ====
```shell
$ cd PATH_YOUR_PROJECT
$ cd uboot
$ make CROSS_COMPILE=aarch64-linux-gnu- kvim2_defconfig
$ make CROSS_COMPILE=aarch64-linux-gnu-
```
Gernerate images in this step:
* ''fip/u-boot.bin'': for onboard EMMC storage booting.
* ''fip/u-boot.bin.sd.bin'': for external TF card booting.
```shell
$ cd PATH_YOUR_PROJECT
$ cd bootloader/uboot
$ ./mk kvim2
```
Gernerate images in this step:
* ''build/u-boot.bin'': for onboard EMMC storage booting.
* ''build/u-boot.bin.sd.bin'': for external TF card booting.
==== Build Android ====
```shell
$ cd PATH_YOUR_PROJECT
$ source build/envsetup.sh
$ lunch TARGET_LUNCH
$ make -jN otapackage
```
Gernerate images: ''out/target/product/kvim2/update.img''.
* Replace ''N'' as the number you want when you run ''make -jN''.
* Replace ''TARGET_LUNCH'' to your lunch select.
* For Android Nougat(7.1), it’s ''kvim2-userdebug-64''.
* For Android Pie(9.0), it’s ''kvim2-userdebug''.
==== Build Linux Kernel ====
When you build the Android Kernel (above), the Linux Kernel will also be built simultaneously.
In some cases, you might want to build the Linux Kernel separately. You can run this script below to do that:
```shell
$ source device/khadas/kvim2/mkern.sh
```
```shell
$ make bootimage
```
===== See Also =====
* [[/products/sbc/edge1/install-os/install-os-into-emmc-via-usb-tool|]]
* [[/products/sbc/edge1/install-os/install-os-into-external-storage|]]