Membuat Android

Ikuti petunjuk di halaman ini untuk membangun Android.

Menyiapkan lingkungan build

Dari dalam direktori kerja, dapatkan skrip envsetup.sh untuk menyiapkan lingkungan build Anda:

source build/envsetup.sh

Skrip ini mengimpor beberapa perintah yang memungkinkan Anda menggunakan kode sumber Android, termasuk perintah yang digunakan di halaman ini. Untuk melihat sumber skrip, lihat platform/build/envsetup.sh. Untuk melihat bantuan bawaan, ketik hmm.

Pilih target

Sebelum membangun Android, Anda harus mengidentifikasi target yang akan di-build. Target mencerminkan platform target yang sedang Anda bangun. Untuk mengidentifikasi target yang akan di-build, gunakan perintah lunch, diikuti dengan string yang mewakili target. Contoh:

lunch aosp_cf_x86_64_phone-trunk_staging-userdebug

Melihat target saat ini

Untuk melihat setelan makan siang saat ini, jalankan:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

String yang mewakili target memiliki format berikut:

lunch product_name-release-build_variant

Komponen string ini adalah:

  • product_name adalah nama produk yang ingin Anda build, seperti aosp_cf_x86_64_phone atau aosp_husky. product_name tertentu dapat mengikuti format Anda sendiri untuk perangkat, tetapi format yang digunakan Google untuk perangkatnya memiliki komponen berikut:

    • aosp merujuk pada Platform Open Source Android.
    • (opsional) cf disertakan saat target dimaksudkan untuk dijalankan dalam emulator Sotong.
    • Arsitektur dan hardware (nama kode), seperti x86_64_phone atau husky yang merupakan nama kode untuk Pixel 8 pro. Untuk mengetahui daftar nama kode perangkat Google, lihat Namakode perangkat.
  • release disetel ke trunk_staging.

  • Bagian build_variant dari string dapat berupa salah satu dari tiga nilai dalam tabel berikut:

    build_variant Deskripsi
    user Varian build ini memberikan akses keamanan terbatas dan cocok untuk produksi.
    userdebug Varian build ini membantu developer perangkat memahami performa dan kecanggihan rilis dalam pengembangan. Saat mengembangkan dengan build userdebug, ikuti Panduan untuk userdebug.
    eng Varian build ini memiliki waktu build yang lebih cepat dan paling cocok untuk pengembangan sehari-hari jika Anda tidak mementingkan performa dan daya.

Jika Anda menjalankan lunch tanpa argumen, daftar target umum disediakan. Anda juga dapat membuat string target sendiri dengan menyusun elemen string target menggunakan informasi di halaman ini dan nama kode yang mewakili hardware Google tertentu di Nama kode perangkat.

Membangun kode

Jalankan perintah berikut untuk membangun target Anda. Bergantung pada spesifikasi workstation Anda, build pertama dapat memerlukan waktu kurang dari satu jam hingga beberapa jam. Build berikutnya memerlukan waktu yang jauh lebih sedikit.

$ m

Output pertama yang akan Anda lihat adalah sinopsis lingkungan build dan target Anda:

============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================

Output build Anda muncul di $OUT_DIR. Jika Anda mem-build target yang berbeda, setiap build target akan muncul di $OUT_DIR.

Perintah m dibuat dari bagian atas hierarki, sehingga Anda dapat menjalankan m dari dalam subdirektori. Jika Anda sudah menetapkan variabel lingkungan TOP, perintah m akan menggunakannya. Jika TOP tidak ditetapkan, perintah m akan mencari hierarki dari direktori saat ini, dan mencoba menemukan bagian atas hierarki.

Perintah m dapat menangani tugas paralel dengan argumen -jN. Jika Anda tidak memberikan argumen -j, sistem build akan otomatis memilih jumlah tugas paralel yang dianggap optimal untuk sistem Anda.

Anda dapat membuat modul spesifik, bukan image perangkat lengkap, dengan mencantumkan nama modul di command line m. Selain itu, perintah m menyediakan beberapa target semu, yang disebut sasaran. Misalnya, m nothing tidak mem-build apa pun, tetapi mengurai dan memvalidasi struktur build. Untuk daftar sasaran yang valid, ketik m help.

Memecahkan masalah error build (8.0 atau yang lebih lama)

Jika Anda mem-build AOSP 8 atau yang lebih lama, m dapat dibatalkan saat mengalami masalah dengan versi Java Anda. Misalnya, Anda mungkin mendapatkan pesan ini:

************************************************************
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
************************************************************

Berikut ini kemungkinan penyebab dan solusinya:

  • Anda gagal menginstal JDK yang benar seperti yang ditentukan di bagian JDK pada Menyiapkan Pengembangan AOSP (2.3 - 8.0) .
  • Ada JDK lain yang sebelumnya diinstal yang muncul di jalur Anda. Tambahkan JDK yang benar ke awal jalur atau hapus JDK yang bermasalah.