AOSP: Persiapan Build

From OnnoWiki
Jump to navigation Jump to search

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).

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.