OS: AOSP - Persiapan Build
Persiapan untuk 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!
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.
Catatan: Jangan lupa untuk memperoleh proprietary binary atau build anda tidak akan berhasil boot di target hardware. Jika berhasil memperoleh binary blobs, kita perlu meng-unpack, make clobber dan rebuild.
Flash dengan fastboot
Untuk flash sebuah device, kita perlu menggunakan fastboot, yang biasanya akan masuk dalam path sesudah berhasil build.
Emulate an Android Device
Sebuah emulator di tambahkan di path oleh proses build. Untuk menjalankan emulator, ketik,
$ emulator
Troubleshooting Build Errors yang Umum
Salah Versi Java
Jika kita berusaha build sebuah versi Android dengan versi Java yang yang salah, akan gagal dengan message berikut,
************************************************************ You are attempting to build with the incorrect version of java. Your version is: WRONG_VERSION. The correct version is: RIGHT_VERSION. Please follow the machine setup instructions at https://source.android.com/source/initializing.html ************************************************************
Ini mungkin disebabkan oleh:
- Kegagalan dalam menginstalasi JDK yang benar seperti di jelaskan pada bagian kebutuhan JDK.
- JDK lain yang di instalasi sebelumnya ada dalam path. Masukan JDK yang benar di awal PATH dan buang JDK yang bermasalah.
Python Version 3
Repo dibuat berdasar fungsi tertentu dari Python 2.x dan sayangnya tidak sepenuhnya compatible dengan Python 3. Untuk menggunakan repo, sebaiknya install Python 2.x:
$ apt-get install python
Tidak ada ijin USB
Pada kebanyakan Linux, user biasa tidak bisa mengakses port USB. Jika kita melihat “permission denied error”, ikuti instruksi di atas untuk menginisialisasi konfigurasi akses USB.
Jika adb sudah jalan dan tidak dapat tersambung ke device sesudah rule di setup, bisa di bunuh dengan perintah adb kill-server. Ini akan membuat adb untuk restart dengan konfigurasi yang baru.