{{indexmenu_n>15}}
====== VIM1S Build Android ======
===== Preparations =====
* [[http://source.android.com/source/initializing.html|Setup the Build Environment]]
* [[products:sbc:vim1s:development:android:download-android-source-code]]
* [[products:sbc:vim1s:development:android:install-toolchains]]
===== Building =====
Make sure you have done all the ''Preparations'' listed above before getting started.
==== Build U-Boot ====
```shell
$ cd PATH_YOUR_PROJECT
$ cd bootloader/uboot
$ ./mk kvim1s
```
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 Linux Kernel ====
```shell
$ ./mk kvim1s -v 5.4 -jN
```
Replace ''N'' with the actual number of threads on your own computer.
==== Build Android ====
```shell
$ cd PATH_YOUR_PROJECT
$ . build/envsetup.sh
$ lunch TARGET_LUNCH
$ make -jN otapackage
```
Gernerate images in this step: ''out/target/product/TARGET/update.img''.
* When compiling Android for VIM3, both Android and the kernel are compiled together. For VIM1S, only Android is compiled, the kernel has to be compiled separately.
* Replace ''N'' with the actual number of threads on your own computer
* Replace ''TARGET_LUNCH'' to your lunch select.
* For VIM1S, it's ''kvim1s-userdebug''.
==== Build Script Demo ====
```sh demo.sh
#!/bin/bash
#build U-Boot
if [ "$1" == 'u' ] || [ "$1" == 'n' ]; then
echo "build U-Boot"
cd bootloader/uboot
./mk kvim1s
cd -
fi
#build Kernel
if [ "$1" == 'k' ] || [ "$1" == 'n' ]; then
echo "build Kernel"
if [ "$2" == 'n' ] || [ "$1" == 'n' ]; then
. build/envsetup.sh
lunch kvim1s-userdebug
make distclean
fi
./mk kvim1s -v 5.4 -j100
fi
#build Android
if [ "$1" == 'a' ] || [ "$1" == 'n' ]; then
echo "build Android"
if [ "$2" == 'n' ] || [ "$1" == 'n' ]; then
. build/envsetup.sh
lunch kvim1s-userdebug
make clean
fi
. build/envsetup.sh
lunch kvim1s-userdebug
make installclean
#make -j80 otapackage
make -j80
fi
```
**Build U-Boot:**
```shell
$ ./demo.sh u
```
**Build Kernel:**
```shell
$ ./demo.sh k
```
**Build Android:**
```shell
$ ./demo.sh a
```
**Build all:**
```shell
$ ./demo.sh n
```