{{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
```