Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Membangun Android

Ikuti petunjuk ini untuk mulai membangun Android.

Menyiapkan lingkungan

Inisialisasi lingkungan dengan envsetup.sh naskah:

source build/envsetup.sh

atau

. build/envsetup.sh

Lihat script di platform yang / build / envsetup.sh untuk deskripsi dari perintah terkait, termasuk makan siang untuk memilih target perangkat dan tapas untuk membangun aplikasi tidak mengikat, seperti aplikasi TV referensi .

Anda perlu mengeluarkan kembali perintah ini setelah setiap repo sync untuk mengambil perubahan pada script yang. Perhatikan bahwa mengganti source dengan . (satu titik) menyimpan beberapa karakter, dan bentuk pendek lebih umum digunakan dalam dokumentasi.

The envsetup.sh impor Script beberapa perintah yang memungkinkan Anda untuk bekerja dengan kode sumber Android, termasuk perintah yang digunakan dalam latihan ini.

Untuk melihat daftar lengkap perintah yang tersedia, jalankan:

hmm

Memilih target

makan siang

Pilih yang menargetkan untuk membangun dengan lunch . lunch product_name - build_variant menyeleksi product_name sebagai produk untuk membangun, dan build_variant sebagai varian untuk membangun, dan toko-toko mereka pilihan di lingkungan untuk dibaca oleh doa berikutnya m dan perintah lain yang sejenis.

Konfigurasi yang tepat dapat diteruskan sebagai argumen. Misalnya, perintah berikut merujuk ke build lengkap untuk emulator, dengan semua debugging diaktifkan:

lunch aosp_arm-eng

Jika dijalankan tanpa argumen, lunch meminta Anda untuk memilih target dari menu. Lihat Memilih perangkat membangun untuk membangun konfigurasi dari semua perangkat yang ada.

Semua target membangun mengambil bentuk BUILD-BUILDTYPE , di mana BUILD adalah codename mengacu pada kombinasi fitur tertentu. BUILDTYPE adalah salah satu dari berikut ini.

Tipe bangunan Menggunakan
pengguna Akses terbatas; cocok untuk produksi
debug pengguna Seperti pengguna tetapi dengan akses root dan kemampuan debug; lebih disukai untuk debugging
inggris Konfigurasi pengembangan dengan alat debugging tambahan

Build userdebug harus berperilaku sama dengan build pengguna, dengan kemampuan untuk mengaktifkan debugging tambahan yang biasanya melanggar model keamanan platform. Ini membuat build userdebug bagus untuk pengujian pengguna dengan kemampuan diagnosis yang lebih besar. Ketika mengembangkan dengan userdebug membangun, ikuti pedoman userdebug .

Eng build memprioritaskan produktivitas rekayasa untuk insinyur yang bekerja di platform. Eng build mematikan berbagai pengoptimalan yang digunakan untuk memberikan pengalaman pengguna yang baik. Jika tidak, eng build memiliki perilaku yang mirip dengan user dan build userdebug sehingga pengembang perangkat dapat melihat bagaimana kode berperilaku di lingkungan tersebut.

Untuk informasi lebih lanjut tentang membangun untuk dan berjalan pada perangkat keras yang sebenarnya, lihat Flashing Devices .

tapas

The tapas perintah mengkonfigurasi membangun aplikasi mengikat. Ini memilih aplikasi individual yang akan dibangun oleh sistem build Android. Tidak seperti lunch , tapas tidak meminta bangunan gambar untuk perangkat.

Jalankan tapas help untuk informasi lebih lanjut tentang perintah.

Membangun kode

Bagian ini adalah ringkasan singkat untuk memastikan bahwa penyiapan telah selesai.

Membangun segala sesuatu dengan m . m dapat menangani tugas-tugas paralel dengan -jN argumen. Jika Anda tidak memberikan -j argumen, membangun sistem secara otomatis memilih hitungan tugas paralel yang dianggapnya adalah optimal untuk sistem anda.

m

Seperti dijelaskan di atas, Anda dapat membangun modul tertentu, bukan gambar perangkat penuh dengan mendaftarkan nama mereka dalam Anda m baris perintah. Selain itu, m menyediakan beberapa pseudotargets untuk tujuan khusus. Beberapa contohnya adalah:

  • droid - m droid adalah membangun normal. Target ini ada di sini karena target default memerlukan nama.
  • all - m all membangun segala sesuatu yang m droid tidak, ditambah segala sesuatu yang tidak memiliki droid tag. Membangun server berjalan ini untuk memastikan bahwa segala sesuatu yang ada di pohon dan memiliki Android.mk berkas membangun.
  • m - Berjalan membangun dari atas pohon. Hal ini berguna karena Anda dapat menjalankan make dari dalam subdirektori. Jika Anda memiliki TOP variabel lingkungan set, menggunakan itu. Jika tidak, ia akan mencari pohon dari direktori saat ini, mencoba menemukan bagian atas pohon. Anda baik dapat membangun seluruh pohon kode sumber dengan menjalankan m tanpa argumen atau target membangun tertentu dengan menentukan nama-nama mereka.
  • mma - Membangun semua modul di direktori saat ini, dan dependensi mereka.
  • mmma - Membangun semua modul di direktori yang disediakan, dan dependensi mereka.
  • croot - cd ke atas pohon.
  • clean - m clean menghapus semua output dan file intermediate untuk konfigurasi ini. Ini adalah sama dengan rm -rf out/ .

Jalankan m help untuk melihat apa pseudotargets lainnya m menyediakan.

Menjalankan build

Anda dapat menjalankan build Anda di emulator atau mem-flash-nya di perangkat. Karena Anda sudah memilih target membangun Anda dengan lunch , itu tidak mungkin untuk berjalan pada target yang berbeda daripada itu dibangun untuk.

Flashing dengan fastboot

Untuk flash perangkat, menggunakan fastboot , yang harus dimasukkan dalam jalur Anda setelah sukses membangun. Lihat Flashing perangkat untuk petunjuk.

Meniru perangkat Android

Emulator ditambahkan ke jalur Anda secara otomatis oleh proses build. Untuk menjalankan emulator, ketik:

emulator

Memahami 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 keterangan FINGERPRINT dalam Parameter Build bagian dari Android Compatibility Definition Document (CDD) untuk sintaks yang tepat.

Sidik jari build mewakili implementasi dan revisi Android tertentu. Kunci unik ini memungkinkan pengembang aplikasi dan orang lain untuk melaporkan masalah dengan versi firmware tertentu. Lihat Bugs Pelaporan untuk proses masalah-pelaporan Android.

Sidik jari build merangkum semua detail implementasi Android:

  • API: Android dan asli, serta perilaku API lunak
  • API Inti dan beberapa perilaku UI sistem
  • Kompatibilitas dan persyaratan keamanan yang ditentukan dalam CDD
  • Spesifikasi produk dan kegunaan-fitur pengaturan yang digunakan oleh aplikasi untuk perangkat target memenuhi persyaratan yang diharapkan
  • Implementasi komponen perangkat keras dan perangkat lunak

Lihat CDD untuk rincian lengkap dan Menambahkan Perangkat Baru untuk instruksi menciptakan perangkat Android yang sama sekali baru.

Memecahkan masalah kesalahan build umum

Versi Java yang salah

Jika Anda mencoba untuk membangun sebuah versi Android yang tidak konsisten dengan versi Jawa, make dibatalkan 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:

  • Kegagalan untuk menginstal JDK yang benar sebagaimana ditentukan dalam persyaratan JDK . Pastikan Anda telah mengikuti langkah-langkah dalam Menyiapkan lingkungan dan Memilih target .
  • JDK lain yang sebelumnya diinstal 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 tidak dapat mengakses port USB. Jika Anda melihat kesalahan ijin ditolak, ikuti petunjuk di Konfigurasi akses USB .

Jika ADB sudah berjalan dan tidak dapat terhubung ke perangkat setelah mendapatkan aturan-aturan diatur, Anda dapat membunuhnya dengan adb kill-server . Perintah itu menyebabkan ADB memulai ulang dengan konfigurasi baru.