{{indexmenu_n>15}} ====== Edge1 Build Android ====== ===== Introduction ===== This document mainly introduces how to compile the Android source code. You will learn how to compile different versions of android source code. ===== Preparation ===== * [[http://source.android.com/source/initializing.html]] * [[.download-android-source-code]] * [[.install-toolchains]] ===== Building ===== Before you start to build, make sure you have done all the Preperations listed above. Build U-Boot: ```shell $ cd PATH_YOUR_PROJECT $ cd u-boot $ make mrproper $ ./make.sh kedge ``` Build kernel: ```shell $ 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: ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399_Android10-userdebug $ make installclean $ make -jN $ ./mkimage.sh ``` 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). ``` 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: ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399_Android10-userdebug $ ./pack_image.sh ``` Build U-Boot: ```shell $ cd PATH_YOUR_PROJECT $ cd u-boot $ make mrproper $ ./make.sh kedge ``` Build kernel: ```shell $ cd PATH_YOUR_PROJECT $ cd kernel $ make ARCH=arm64 kedge_defconfig -jN $ make ARCH=arm64 rk3399-khadas-edge-android.img -jN ``` Build Android: ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399-userdebug $ make installclean $ make -jN $ ./mkimage.sh ``` 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). ``` 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 ``` Packing update.img: ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399-userdebug $ ./pack_image.sh ``` Build U-Boot: ```shell $ cd PATH_YOUR_PROJECT $ cd uboot $ make kedge_defconfig $ make ARCHV=aarch64 ``` Build kernel: ```shell $ cd PATH_YOUR_PROJECT $ cd kernel $ make ARCH=arm64 kedge_defconfig -jN $ make ARCH=arm64 rk3399-khadas-edge-android.img -jN ``` Build Android: ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399_all-userdebug $ make installclean $ make -jN $ ./mkimage.sh ``` 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). ``` 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'': ```shell $ cd PATH_YOUR_PROJECT $ source build/envsetup.sh $ lunch rk3399_all-userdebug $ ./pack_image.sh ``` ===== See Also ===== * [[/products/sbc/edge1/install-os/install-os-into-emmc-via-usb-tool|Install OS Into eMMC via USB Tool]] * [[/products/sbc/edge1/install-os/install-os-into-external-storage|Install OS into External Storage]]