Ikuti petunjuk berikut untuk mulai membuat Android.
Menyiapkan lingkungan
Inisialisasi lingkungan dengan skrip envsetup.sh
:
source build/envsetup.sh
atau
. build/envsetup.sh
Lihat skrip di platform/build/envsetup.sh untuk deskripsi perintah terkait, termasuk makan siang untuk memilih target perangkat dan tapas untuk membuat aplikasi yang tidak dibundel, seperti aplikasi TV referensi .
Anda perlu menerbitkan ulang perintah ini setelah setiap repo sync
untuk mengambil perubahan apa pun pada skrip tersebut. Perhatikan bahwa mengganti source
dengan .
(satu titik) menyimpan beberapa karakter, dan bentuk pendeknya lebih umum digunakan dalam dokumentasi.
Skrip envsetup.sh
mengimpor beberapa perintah yang memungkinkan Anda bekerja dengan kode sumber Android, termasuk perintah yang digunakan dalam latihan ini.
Untuk melihat daftar lengkap perintah yang tersedia, jalankan:
hmm
Memilih sasaran
makan siang
Pilih target mana yang akan dibangun dengan lunch
. lunch product_name - build_variant
memilih product_name sebagai produk yang akan dibuat, dan build_variant sebagai varian yang akan dibuat, dan menyimpan pilihan tersebut di lingkungan untuk dibaca oleh pemanggilan m
berikutnya dan perintah serupa lainnya.
Konfigurasi yang tepat dapat dijadikan argumen. Misalnya, perintah berikut mengacu pada build lengkap untuk emulator, dengan semua proses debug diaktifkan:
lunch aosp_arm-eng
Jika dijalankan tanpa argumen, lunch
akan meminta Anda untuk memilih target dari menu, namun perhatikan bahwa menu tersebut tidak mencakup semua kemungkinan. Lihat Memilih build perangkat untuk konfigurasi build semua perangkat yang didukung di AOSP, atau bicarakan dengan orang di tim Anda tentang makan siang yang tepat untuk perangkat yang sedang Anda gunakan.
Semua target pembangunan berbentuk BUILD-BUILDTYPE
, dengan BUILD
adalah nama kode yang mengacu pada kombinasi fitur tertentu. BUILDTYPE
adalah salah satu dari yang berikut ini.
Tipe bangunan | Menggunakan |
---|---|
pengguna | Akses terbatas; cocok untuk produksi |
debug pengguna | Seperti pengguna tetapi dengan akses root dan kemampuan debug; sangat dekat dengan kinerja produksi |
bahasa Inggris | Konfigurasi pengembangan dengan waktu build lebih cepat; paling cocok untuk pengembangan sehari-hari |
Build userdebug
harus berperilaku sama dengan build user
, dengan kemampuan untuk mengaktifkan debugging tambahan yang biasanya melanggar model keamanan platform. Hal ini membuat build userdebug
bagus untuk memahami kinerja dan kekuatan yang digunakan oleh rilis. Saat mengembangkan dengan build userdebug
, ikuti pedoman userdebug .
eng
build memprioritaskan produktivitas teknik bagi para insinyur yang bekerja di platform. Versi eng
menonaktifkan berbagai pengoptimalan yang digunakan untuk memaksimalkan kinerja waktu proses. Jika tidak, build eng
sangat mirip dengan build user
dan userdebug
sehingga pengembang perangkat dapat melihat bagaimana kode berperilaku di lingkungan tersebut.
Untuk melihat pengaturan makan siang saat ini, jalankan perintah:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
Untuk informasi lebih lanjut tentang membangun dan menjalankan perangkat keras sebenarnya, lihat Perangkat Flashing .
tapas
Perintah tapas
mengonfigurasi pembuatan aplikasi yang tidak dibundel. Ini memilih aplikasi individual yang akan dibangun oleh sistem build Android. Tidak seperti lunch
, tapas
tidak meminta pembuatan gambar untuk perangkat.
Jalankan tapas help
untuk informasi lebih lanjut tentang perintah tersebut.
Membangun kode
Bagian ini adalah ringkasan singkat untuk memastikan bahwa pengaturan telah selesai.
Bangun semuanya dengan m
. m
dapat menangani tugas paralel dengan argumen -jN
. Jika Anda tidak memberikan argumen -j
, sistem build secara otomatis memilih jumlah tugas paralel yang dianggap optimal untuk sistem Anda.
m
Seperti dijelaskan di atas, Anda dapat membuat modul tertentu alih-alih image perangkat lengkap dengan mencantumkan namanya di baris perintah m
Anda. Selain itu, m
menyediakan beberapa target semu untuk tujuan khusus. Beberapa contohnya adalah:
-
droid
-m droid
adalah versi normal. Target ini ada di sini karena target default memerlukan nama. -
all
-m all
membuat semua yang dilakukanm droid
, ditambah semua yang tidak memiliki tagdroid
. Server build menjalankan ini untuk memastikan bahwa semua yang ada di pohon dan memiliki fileAndroid.mk
dibuat. -
m
- Jalankan dibangun dari atas pohon. Ini berguna karena Anda dapat menjalankanmake
dari dalam subdirektori. Jika Anda telah menetapkan variabel lingkunganTOP
, ia akan menggunakannya. Jika tidak, ia akan mencari pohon dari direktori saat ini, mencoba menemukan puncak pohon. Anda dapat membuat seluruh pohon kode sumber dengan menjalankanm
tanpa argumen atau membuat target spesifik dengan menentukan namanya. -
mma
- Membangun semua modul di direktori saat ini, dan dependensinya. -
mmma
- Membangun semua modul di direktori yang disediakan, dan dependensinya. -
croot
-cd
ke puncak pohon. -
clean
-m clean
menghapus semua file keluaran dan perantara untuk konfigurasi ini. Ini sama denganrm -rf out/
.
Jalankan m help
untuk melihat target semu lain yang disediakan m
.
Menjalankan pembangunan
Anda dapat menjalankan build Anda di emulator atau mem-flash-nya di perangkat. Karena Anda telah memilih target pembangunan dengan lunch
, kemungkinan besar target pembangunan tersebut tidak akan berjalan pada target yang berbeda dari tujuan pembangunannya.
Berkedip dengan fastboot
Untuk mem-flash perangkat, gunakan fastboot
, yang harus disertakan dalam jalur Anda setelah build berhasil. Lihat Mem-flash perangkat untuk petunjuknya.
Meniru perangkat Android
Emulator ditambahkan ke jalur Anda secara otomatis melalui proses pembangunan. Untuk menjalankan emulator, ketik:
emulator
Pemahaman membangun sidik jari
Untuk melacak dan melaporkan masalah yang terkait dengan build Android tertentu, penting untuk memahami sidik jari build. Sidik jari build adalah string unik yang dapat dibaca manusia yang berisi informasi pabrikan yang dikeluarkan untuk setiap build. Lihat deskripsi SIDIK JARI di bagian Parameter Build pada Dokumen Definisi Kompatibilitas Android (CDD) untuk mengetahui sintaksis yang tepat.
Sidik jari build mewakili implementasi dan revisi Android tertentu. Kunci unik ini memungkinkan pengembang aplikasi dan pihak lain melaporkan masalah dengan versi firmware tertentu. Lihat Melaporkan bug untuk proses pelaporan masalah Android.
Sidik jari build merangkum semua detail implementasi Android:
- API: Android dan asli, serta perilaku API lunak
- API Inti dan beberapa perilaku UI sistem
- Persyaratan kompatibilitas dan keamanan ditentukan dalam CDD
- Spesifikasi produk dan pengaturan penggunaan fitur yang digunakan oleh aplikasi untuk menargetkan perangkat yang memenuhi persyaratan yang diharapkan
- Implementasi komponen perangkat keras dan perangkat lunak
Lihat CDD untuk detail selengkapnya dan Menambahkan Perangkat Baru untuk instruksi membuat perangkat Android yang benar-benar baru.
Memecahkan masalah kesalahan build yang umum
Versi Java salah
Jika Anda mencoba membuat versi Android yang tidak konsisten dengan versi Java Anda, make
dengan pesan seperti:
************************************************************ 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 kemungkinan penyebab dan solusinya:
- Gagal menginstal JDK yang benar seperti yang ditentukan dalam persyaratan JDK . Pastikan Anda telah mengikuti langkah-langkah dalam Menyiapkan lingkungan dan Memilih target .
- JDK lain yang diinstal sebelumnya muncul di jalur Anda. Tambahkan JDK yang benar ke awal jalur Anda atau hapus JDK yang bermasalah.
Tidak ada izin USB
Secara default di sebagian besar sistem Linux, pengguna yang tidak memiliki hak istimewa tidak dapat mengakses port USB. Jika Anda melihat kesalahan izin ditolak, ikuti petunjuk di Mengonfigurasi akses USB .
Jika ADB sudah berjalan dan tidak dapat terhubung ke perangkat setelah menyiapkan aturan tersebut, Anda dapat mematikannya dengan adb kill-server
. Perintah itu menyebabkan ADB memulai ulang dengan konfigurasi baru.