AOSP: Persiapan Build
Instruksi build berikut berlaku untuk Android source tree untuk semua branch, termasuk master. Langkah yang perlu dilakukan akan di jelaskan pada bagian ini.
Pada saat kita mem-build Android 6.0 atau yang lebih baru, sebetulnya kita akan meng-compile menggunakan Jack. Jack adalah toolchain Android yang baru yang akan meng-compile Java source menjadi Android dex bytecode. Jack menggantikan berbagai Android toolchain yang lama, yang biasanya terdiri dari beberapa tool, seperti, javac, ProGuard, jarjar, dan dx.
Jack toolchain memberikan keuntungan berikut:
- Sepenuhnya open source.
- Tersedia di AOSP, semua mitra di persilahkan untuk berkontribusi mengembangkan.
- Mempercepatan waktu kompilasi. Jack mempunyai dukungan yang spesifik untuk mengurangi waktu kompilasi: pre-dexing, kompilasi berjenjang dan Jack compilation server. Mendukung shrinking, obfuscation, repackaging dan multidex. Penggunaan paket terpisah seperti ProGuard tidak lagi di perlukan.
Jack mempunyai format sendiri .jack, yang berisi pre-compiled dex code untuk library, yang memungkinkan proses kompilasi yang lebih cepat (pre-dex).
Walaupun demikian, sebetulnya kita tidak perlu melakukan apapun yang berbeda dengan menggunakan Jack – kita cukup menjalakan perintah standard make untuk compile tree atau project anda.
Binary proprietary
AOSP tidak dapat digunakan dari hanya murni source code aja, akan membutuhkan tambahan library hardware proprietary untuk bisa jalan, seperti, untuk hardware graphics accelerator. Untuk mereka yang menggunakan Nexus & Pixel dapat mendownload preview, factory image, drivers, dan update over-the-air (OTA).
- https://developers.google.com/android/blobs-preview - Preview binaries (blobs) – untuk AOSP master branch development
- https://developers.google.com/android/nexus/images - Factory image – untuk supported device yang menjalankan AOSP release branch.
- https://developers.google.com/android/nexus/drivers - Binary hardware support file – untuk device yang menjalankan AOSP release branch.
- https://developers.google.com/android/nexus/ota - OTA image – untuk update secara manual Nexus device over the air (OTA).
Binary di atas memberikan akses tambahan ke hardware yang ada dengan non-open source code. Dari pada membuat AOSP master branch, gunakan Binaries Preview untuk Nexus Device. Jika mem-build master branch untuk sebuah device, gunakan binary untuk release number atau tanggal yang paling baru.
Ekstrak proprietary binary
Setiap binary di bungkus dengan script yang akan mengekstrak diri sendiri dari arsip yang di kompres. Buka setiap arsip, jalankan script ektrak dari root source tree, kemudian konfirmasi bahwa kita setuju dengan license agreement. Binary dan makefile-nya akan di instalasi di directory vendor/ dari source tree.
Clean up
Untuk memastikan bahwa binary yang baru benar-benar di handel dengan baik, men-delete output dari build sebelumnya menggunakan perintah,
$ make clobber
Set up environment
Inisialisasi environment menggunakan script envsetup.sh . Perlu di catat bahwa perintah “source” dapat di ganti dengan . (sebuah dot) untuk menghemat beberapa karakter, dan bentuk pendek ini yang banyak digunakan di dokumentasi,
$ source build/envsetup.sh
atau
$ . build/envsetup.sh
Memilih target
Memilih target untuk di build menggunakan lunch. Jika lunch belum di install ada baiknya di install menggunakan perintah,
$ sudo apt install python-lunch
Konfigurasi yang benar akan di kirim sebagai argumen. Contoh, perintah berikut,
$ lunch aosp_arm-eng
perintah di atas akan mem-build secara lengkap untuk emulator android, dengan semua debugging di enable.
Jika di jalankan tanpa argument maka lunch akan menanyakan target mana yang akan dibuat.
Semua build target akan berbentuk BUILD-BUILDTYPE, dimana BUILD adalah codename yang mengacu pada kombinasi fitur tertentu.
BUILDTYPE adalah salah satu dari hal berikut,
Buildtype Use user akses terbatas; cocok untuk produksi userdebug seperti "user" tapi dengan akses root dan kemampun untuk debugging. Eng konfigurasi untuk development dengan debugging tools tambahan.
Build code
Jika semua telah benar di konfigurasi dll. Maka kita dapat mem-build android. Build semuanya menggunakan make. GNU make dapat menangani berbagai tugas secara paralel menggunakan argumen -jN, dan adalah biasa untuk menggunakan jumlah tugas antara 1 dan 2 dari hardware thread di komputer yang digunakan untuk build. Contoh, sebuah mesin dual-E5520 (2 CPU, 4 core per CPU, 2 thread per core), maka untuk build yang cepat dapat menggunakan perintah antara make -j16 dan make -j32. Contoh perintah make,
$ make -j4
atau yang lebih aman,
$ make -j1
Jalankan! Sebaiknya ini dilakukan di sore atau siang hari, untuk di jalankan semalam suntuk. Jika berhasil dengan baik kira-kira keluarannya adalah,
build/tools/generate-notice-files.py out/target/product/generic/obj/NOTICE.txt Combining NOTICE files into HTML Combining NOTICE files into text Installed file list: out/target/product/generic/installed-files.txt Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_ Running: mkyaffs2image -f out/target/product/generic/system out/target/product Install system fs image: out/target/product/generic/system.img
Kita dapat menjalankan hasil build pada emulator atau flash pada perangkat. Harap dicatat bahwa jika kita telah memilih target build dengan lunch, maka tidak mungkin menjalankan pada target yang berbeda dengan target yang pernah di sebut. Untuk Device Non-Nexus
Beberapa manufakturer, seperti samsung, LG dll. membuka source code android atau proprietary binary (binary blobs) & meletakan di web. Jika kita berhasil memperoleh source code tambahan untuk device yang perlu dilakukan adalah unpack, make clobber dan build. Sebagai contoh, penulis akan memperlihatkan untuk LG Optimus G Pro codename F240K agar menjadi lollypop (android 5.0).
Download source code terakhir untuk f240k dari http://opensource.lge.com dan unzip, akan keluar dua file penting,
LGF240_L_V30c_Android.tar.gz LGF240_L_V30c_Kernel.tar.gz
init source android
cd source-android repo init -b android-5.1.1_r38
copy source f240 ke source android dan untar
cp LGF240K_Gpro_L_V30d.zip ~/source-android cd ~/source-android unzip LGF240K_Gpro_L_V30d.zip tar zxvf LGF240_L_V30c_Android.tar.gz
Bagian yang paling pusing adalah menggabungkan source code vendor agar masuk ke manifest AOSP sehingga bisa di panggil oleh lunch, jika ini bisa dilakukan langkah selanjutnya adalah meng-compile,
source build/envsetup.sh lunch 1 make -j4
Jika kita meng-compile source code android, kita harus menambahkan prebuilt source (toolchain) google yang original ke directory android. Setelah setelah build, outout dapat di peroleh di out/target/product/generic
Kita perlu membuat kernel dapat menggunakan langkah berikut
Copy dan untar source kernel f240k
cp LGF240K_Gpro_L_V30d.zip ~/source-android cd ~/source-android unzip LGF240K_Gpro_L_V30d.zip tar zxvf LGF240_L_V30c_Kernel.tar.gz cd ~/source-android
Jika kita mengcompile source code kernel, kita harus menambahkan prebuilt source(toolchain) google ke directory android. Untuk build kernel f240k kita perlu menjalankan script berikut
cd ~/source-android/kernel/ make ARCH=arm CROSS_COMPILE=../prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi- gkkt_bcm-perf_defconfig zImage -j4
Setelah build, zImage kernel ada di arch/arm/boot
Untuk build chromium34_lge (vendor\lge\external\chromium34_lge\src) bisa di baca di README.txt dalam folder tersebut.