본문 바로가기

Embedded/Android Phone

[Android One] 2.How To Compile CyanogenMod 11.0 From Source Code

Micromax Canvas A1 

Step 1: Create source directory

~$ mkdir sprout ~$ cd sprout ~/sprout$ mkdir cm11 ~/sprout$ cd cm11


Step 2: Initialize source directory

~/sprout/cm11$ repo inti -u git://github.com/CyanogenMod/android.git -b cm-11.0


Step 3: Download the source code

~/sprout/cm11$ repo sync


Step 4: Get Device Tree, Kernel and Vendor Sources for Android One Specific

~/sprout/cm11$ git clone https://github.com/varunchitre15/android_device_google_sprout -b cm-11.0 device/google/sprout
~/sprout/cm11$ git clone https://github.com/varunchitre15/android_kernel_mediatek_sprout -b cm-11.0 kernel/google/sprout
~/sprout/cm11$ git clone https://github.com/varunchitre15/android_vendor_google_sprout -b cm-11.0 vendor/google/sprout


Step 5: Get prebuilt apps

~/sprout/cm11$ cd vendor/cm
~/sprout/cm11/vendor/cm$ . /get-prebuilts
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   178  100   178    0     0    506      0 --:--:-- --:--:-- --:--:--   507
100  554k  100  554k    0     0   595k      0 --:--:-- --:--:-- --:--:-- 2737k
Archive:  ./proprietary/Term.apk
  inflating: ./proprietary/lib/arm64-v8a/libjackpal-androidterm4.so  
  inflating: ./proprietary/lib/armeabi/libjackpal-androidterm4.so  
  inflating: ./proprietary/lib/armeabi-v7a/libjackpal-androidterm4.so  
  inflating: ./proprietary/lib/mips/libjackpal-androidterm4.so  
  inflating: ./proprietary/lib/mips64/libjackpal-androidterm4.so  
  inflating: ./proprietary/lib/x86/libjackpal-androidterm4.so
  inflating: ./proprietary/lib/x86_64/libjackpal-androidterm4.so
~/sprout/cm11/vendor/cm$


Step 6: Prepare device specific code 

 - sprout is for Android One


~/sprout/cm11/vendor/cm$ cd ~/sprout/cm11/
~/sprout/cm11$ source build/envsetup.sh
including device/generic/armv7-a-neon/vendorsetup.sh
including device/generic/goldfish/vendorsetup.sh
including device/generic/mips/vendorsetup.sh
including device/generic/x86/vendorsetup.sh
including device/google/sprout/vendorsetup.sh
including vendor/cm/vendorsetup.sh
including sdk/bash_completion/adb.bash
including vendor/cm/bash_completion/git.bash
including vendor/cm/bash_completion/repo.bash

~/sprout/cm11$ breakfast sprout
including vendor/cm/vendorsetup.sh
Trying dependencies-only mode on a non-existing device tree?
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
CM_VERSION=11-20150304-UNOFFICIAL-sprout
TARGET_PRODUCT=cm_sprout
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-45-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=/home/appmarkers/sprout/cm11/out
============================================
~/sprout/cm11$


Step 6: Enable caching 

~/sprout/cm11$ export USE_CCACHE=1


Step 7: Setup the enviroment

~/sprout/cm11$ . build/envsetup.sh


Step 8: Start building

~/sprout/cm11$ brunch sprout
including vendor/cm/vendorsetup.sh
Trying dependencies-only mode on a non-existing device tree?

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
CM_VERSION=11-20150304-UNOFFICIAL-sprout
TARGET_PRODUCT=cm_sprout
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-45-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=/home/appmarkers/sprout/cm11/out
============================================

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.4
CM_VERSION=11-20150304-UNOFFICIAL-sprout
TARGET_PRODUCT=cm_sprout
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a7
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-45-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KTU84Q
OUT_DIR=/home/appmarkers/sprout/cm11/out
============================================
/home/appmarkers/sprout/cm11/out/target/product/sprout/obj/APPS/SignatureTest_intermediates
device/google/sprout/wpa_supplicant/Android.mk:19: Build wpa_supplicant_lib...

....

build/target/product/security/testkey.pk8 /tmp/tmp_40vOe /home/appmarkers/sprout/cm11/out/target/product/sprout/cm_sprout-ota-798bb45607.zip
done.
Package Complete: /home/appmarkers/sprout/cm11/out/target/product/sprout/cm-11-20150304-UNOFFICIAL-sprout.zip

~/sprout/cm11$ 


Step 9: Rebuilding opne a new terminal

every time you open a new terminal you will have to initialize the build environment. to do that type

~/sprout/cm11$ . build/envsetup.sh

Step 10: Rebuild command

~/sprout/cm11$ brunch sprout