Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Gambar Sistem Generik

Image sistem generik (GSI) adalah image sistem dengan konfigurasi yang disesuaikan untuk perangkat Android. Ini dianggap sebagai implementasi Android murni dengan kode Android Open Source Project (AOSP) yang tidak dimodifikasi sehingga perangkat Android apa pun yang menjalankan Android 8.1 atau lebih tinggi dapat berjalan dengan sukses.

GSI digunakan untuk menjalankan pengujian VTS dan CTS-on-GSI. Image sistem perangkat Android diganti dengan GSI, lalu diuji dengan Vendor Test Suite (VTS) dan Compatibility Test Suite (CTS) untuk memastikan bahwa perangkat mengimplementasikan antarmuka vendor dengan benar dengan Android versi terbaru.

Untuk memulai GSI, tinjau bagian berikut untuk mengetahui detail tentang konfigurasi GSI (dan varian yang diizinkan), jenis (GSI Android dan GSI Lama ), serta biner vendor dan dependensi VNDK . Saat Anda siap menggunakan GSI, download dan buat GSI untuk target perangkat Anda, lalu flash GSI tersebut ke perangkat Android.

Konfigurasi dan varian GSI

Android GSI saat ini memiliki konfigurasi berikut:

  • Tiga kali lipat. GSI menyertakan dukungan penuh untuk perubahan arsitektur berbasis HIDL (juga dikenal sebagai Treble ) yang diperkenalkan di Android 8.0, termasuk dukungan untuk antarmuka HIDL . Anda dapat menggunakan GSI di perangkat Android apa pun yang menggunakan antarmuka vendor HIDL. (Untuk detail selengkapnya, lihat Sumber daya arsitektur .)
  • Verifikasi boot. GSI tidak menyertakan solusi verifikasi boot (seperti vboot 1.0 atau AVB ). Untuk mem-flash GSI ke perangkat yang diluncurkan pada Android 9 atau lebih lama, perangkat harus memiliki metode untuk menonaktifkan verifikasi boot.
  • Berkas sistem. GSI menggunakan sistem file ext4.
  • Tata letak partisi. GSI menggunakan tata letak partisi sistem-sebagai-root .

Android GSI saat ini mencakup varian utama berikut:

  • Arsitektur CPU. Dukungan untuk instruksi CPU yang berbeda (ARM, x86, dll.) Dan bitness CPU (32 bit atau 64 bit).

GSI menargetkan untuk uji kepatuhan Treble

GSI yang digunakan untuk pengujian kepatuhan ditentukan oleh versi Android tempat perangkat diluncurkan.

Tipe perangkat Bangun target
Perangkat yang diluncurkan dengan Android 10 aosp_$arch-user
Perangkat yang diluncurkan dengan Android 9 aosp_$arch-userdebug
Perangkat yang diluncurkan dengan Android 8.0 atau Android 8.1 aosp_$arch_ab-userdebug

Semua GSI dibuat dari basis kode Android 10, dan setiap arsitektur CPU memiliki biner GSI yang sesuai (lihat daftar target build dalam Membuat GSI ).

Perubahan GSI Android 10

Perangkat yang diluncurkan dengan Android 10 harus menggunakan Android 10 GSI untuk pengujian kepatuhan. Ini termasuk perubahan besar berikut dari GSI sebelumnya:

  • Bangun pengguna. GSI memiliki build pengguna dari Android 10. Di Android 10, GSI build pengguna dapat digunakan dalam pengujian kepatuhan CTS-on-GSI / VTS. Referensi Pengujian VTS dengan Debug Ramdisk untuk detailnya.
  • Format tidak terurai. GSI dengan target aosp_$arch dibuat dengan format tidak terurai. Anda dapat menggunakan img2simg untuk mengonversi GSI tak terurai menjadi format renggang jika perlu.
  • Sistem-sebagai-root. Target build GSI lama bernama aosp_$arch_a telah dihentikan secara bertahap. Untuk perangkat yang diupgrade dari Android 8 atau 8.1 ke Android 10 dengan ramdisk dan non-system-as-root, gunakan GSI lama aosp_$arch_ab . init ditingkatkan di ramdisk mendukung OEM system.img dengan tata letak system-as-root.

Untuk menguji perangkat yang diluncurkan di Android 9 atau 10 dengan CTS-on-GSI, gunakan target build Android GSI .

GSI lama

GSI lama yang diberi nama akhiran _ab (misalnya, aosp_arm64_ab ). GSI ini dibuat dari pohon sumber Android 10 tetapi berisi konfigurasi yang kompatibel dengan versi sebelumnya untuk perangkat yang diupgrade dari Android 8 atau 8.1:

  • Ruang pengguna 32-bit + antarmuka pengikat 32-bit. GSI 32-bit dapat terus menggunakan antarmuka pengikat 32-bit.
  • 8.1 VNDK. Perangkat dapat menggunakan 8.1 VNDK yang disertakan.
  • Pasang direktori. Beberapa perangkat lama menggunakan direktori sebagai penunjuk pemasangan (misalnya, /bluetooth , /firmware/radio , dan /persist ).

Untuk menguji perangkat yang diluncurkan di Android 8 atau 8.1 dengan CTS-on-GSI, gunakan target build GSI Lama .

Android 9 GSI berubah

Android 9 GSI menyertakan perubahan besar berikut dari GSI sebelumnya:

  • Menggabungkan GSI dan emulator. GSI dibuat dari image sistem produk emulator, misalnya, aosp_arm64 dan aosp_x86 .
  • Sistem-sebagai-root. Di versi Android sebelumnya, perangkat yang tidak mendukung update A / B dapat memasang image sistem di bawah direktori /system . Di Android 9, root image sistem dipasang sebagai root perangkat.
  • Antarmuka pengikat 64-bit. Di Android 8.x, GSI 32-bit menggunakan antarmuka pengikat 32-bit. Android 9 tidak mendukung antarmuka pengikat 32-bit, jadi GSI 32-bit dan GSI 64-bit menggunakan antarmuka pengikat 64-bit.
  • Penegakan VNDK. Di Android 8.1, VNDK bersifat opsional. Mulai dari Android 9, VNDK bersifat wajib, jadi BOARD_VNDK_VERSION harus disetel.
  • Properti sistem yang kompatibel. Android 9 mengaktifkan pemeriksaan akses untuk properti sistem yang kompatibel ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

Perubahan Keymaster Android 9

Di versi Android sebelumnya, perangkat yang mengimplementasikan Keymaster 3 atau lebih rendah diperlukan untuk memverifikasi bahwa info versi ( ro.build.version.release dan ro.build.version.security_patch ) yang dilaporkan oleh sistem yang berjalan cocok dengan info versi yang dilaporkan oleh bootloader. Informasi tersebut biasanya diperoleh dari boot image header.

Di Android 9 dan lebih tinggi, persyaratan ini telah diubah untuk memungkinkan vendor mem-boot GSI. Secara khusus, Keymaster tidak boleh melakukan verifikasi karena info versi yang dilaporkan oleh GSI mungkin tidak cocok dengan info versi yang dilaporkan oleh bootloader vendor. Untuk perangkat yang menerapkan Keymaster 3 atau lebih rendah, vendor harus mengubah penerapan Keymaster untuk melewati verifikasi (atau meningkatkan versi ke Keymaster 4). Untuk mengetahui detail tentang Keymaster, lihat Keystore yang didukung Perangkat Keras .

Biner vendor dan dependensi VNDK

Perangkat yang meningkatkan versi ke Android 10 memiliki jalur peningkatan yang berbeda tergantung pada versi biner vendor yang digunakan pada perangkat dan konfigurasi terkait VNDK yang digunakan untuk membangun perangkat. Tabel berikut merangkum dukungan GSI lama untuk perangkat yang diupgrade.

Kasus penggunaan Penjaja
biner
Versi: kapan
BOARD_VNDK_VERSION GSI lama
versi sistem biner
Dukungan GSI lama
0 8.0 (apa saja) 10 Tidak
1 8.1 (kosong) 10 Tidak
2 8.1 current 10 Iya
3 10 current 10 Iya

Kasus penggunaan yang paling umum didukung adalah # 2, dengan perangkat dukungan GSI lama yang menjalankan Android 8.1 yang dibuat dengan BOARD_VNDK_VERSION disetel ke current .

Kasus # 1 tidak didukung. Dalam kasus ini, GSI lama TIDAK mendukung perangkat yang menjalankan Android 8.1 yang mana BOARD_VNDK_VERSION dihilangkan dari build. Perangkat ini tidak dapat didukung karena biner vendornya bergantung pada library bersama Android 8.1 non-VNDK, yang tidak termasuk dalam GSI lama. Untuk membuat perangkat ini kompatibel dengan GSI lama, Anda harus melakukan salah satu hal berikut:

  • Aktifkan BOARD_VNDK_VERSION tanpa BOARD_VNDK_RUNTIME_DISABLE (kasus penggunaan # 2).

    ATAU

  • Port / tingkatkan biner vendor untuk bergantung pada pustaka bersama dari Android 10 (kasus penggunaan # 3).

Mendownload GSI

Anda dapat mendownload GSI bawaan dari situs web integrasi berkelanjutan (CI) AOSP di ci.android.com . Jika jenis GSI untuk platform hardware Anda tidak tersedia untuk didownload, lihat bagian berikut untuk mengetahui detail tentang membuat GSI untuk target tertentu.

Membangun GSI

Dimulai dengan Android 9, setiap versi Android memiliki cabang GSI bernama DESSERT -gsi di AOSP (misalnya, android10-gsi adalah cabang GSI di Android 10). Cabang GSI menyertakan konten Android dengan semua patch keamanan dan patch GSI yang diterapkan.

Untuk membuat GSI, siapkan pohon sumber Android dengan mendownload dari cabang GSI dan memilih target build GSI . Gunakan tabel target build di bawah ini untuk menentukan versi GSI yang benar untuk perangkat Anda. Setelah build selesai, GSI adalah image sistem (yaitu system.img ) dan muncul di folder output out/target/product/ generic_arm64 . Build juga mengeluarkan vbmeta.img , yang dapat Anda gunakan untuk menonaktifkan verifikasi boot pada perangkat menggunakan Android Verified Boot .

Misalnya, untuk membangun GSI build target aosp_arm64-userdebug di cabang GSI android10-gsi , jalankan perintah berikut.

$ repo init -u https://android.googlesource.com/platform/manifest -b android10-gsi
$ repo sync -cq
$ source build/envsetup.sh
$ lunch aosp_arm64-userdebug
$ make -j4

Target build Android GSI

Target build GSI berikut ditujukan untuk perangkat yang diluncurkan di Android 9 atau lebih tinggi. Karena pengurangan variasi antar arsitektur, Android 10 hanya menyertakan empat produk GSI.

Nama GSI Lengkungan CPU Bitness antarmuka pengikat Sistem-sebagai-root Bangun target
aosp_arm LENGAN 64 Y aosp_arm-user
aosp_arm-userdebug
aosp_arm64 ARM64 64 Y aosp_arm64-user
aosp_arm64-userdebug
aosp_x86 x86 64 Y aosp_x86-user
aosp_x86-userdebug
aosp_x86_64 x86-64 64 Y aosp_x86_64-user
aosp_x86_64-userdebug

Target build GSI lama

Target build GSI lama berikut adalah untuk perangkat yang diupgrade dari Android 8.0 atau 8.1 ke Android 10. Nama GSI lama menyertakan akhiran _ab untuk membedakannya dari nama GSI Android 10.

Nama GSI Lengkungan CPU Bitness antarmuka pengikat Sistem-sebagai-root Bangun target
aosp_arm_ab LENGAN 32 Y aosp_arm_ab-userdebug
aosp_arm_64b_ab LENGAN 64 Y aosp_arm_64b_ab-userdebug
aosp_arm64_ab ARM64 64 Y aosp_arm64_ab-userdebug
aosp_x86_ab x86 32 Y aosp_x86_ab-userdebug
aosp_x86_64_ab x86-64 64 Y aosp_x86_64_ab-userdebug

Persyaratan untuk mem-flash GSI

Perangkat Android dapat memiliki desain yang berbeda, jadi tidak ada perintah umum atau serangkaian instruksi untuk mem-flash GSI untuk diterapkan ke semua perangkat. Hubungi produsen perangkat Android untuk instruksi flashing eksplisit. Gunakan langkah-langkah berikut sebagai pedoman umum:

  1. Pastikan perangkat memiliki yang berikut:
    • Treblized
    • Metode untuk membuka kunci perangkat (sehingga dapat di-flash menggunakan fastboot )
    • Metode untuk menonaktifkan verifikasi boot (misalnya, vboot 1.0 atau AVB )
    • Status tidak terkunci untuk membuatnya dapat di-flash melalui fastboot (Untuk memastikan bahwa Anda memiliki fastboot versi terbaru, buat dari pohon sumber Android.)
  2. Nonaktifkan verifikasi boot.
  3. Hapus partisi sistem saat ini, lalu flash GSI ke partisi sistem.
  4. Hapus data pengguna dan hapus data dari partisi lain yang diperlukan (misalnya, data pengguna dan partisi sistem).
  5. Nyalakan ulang perangkat.

Misalnya, untuk mem-flash GSI ke perangkat Pixel apa pun:

  1. Boot ke mode fastboot dan buka kunci bootloader . Perangkat yang mendukung fastbootd juga perlu boot ke fastbootd oleh:
    $ fastboot reboot fastboot
  2. Nonaktifkan verifikasi boot (AVB) dengan vbmeta.img :
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  3. Hapus dan flash GSI ke partisi sistem:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. Hapus data pengguna dan hapus data dari partisi lain yang diperlukan (misalnya, data pengguna dan partisi sistem):
    $ fastboot -w
  5. Reboot:
    $ fastboot reboot
Pada perangkat Android 10 yang memiliki partisi sistem yang lebih kecil, pesan kesalahan berikut mungkin muncul saat mem-flash GSI:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
Gunakan perintah berikut untuk menghapus partisi produk dan mengosongkan ruang untuk partisi sistem. Ini memberikan ruang ekstra untuk mem-flash GSI:
$ fastboot delete-logical-partition product_a
Postfix _a harus cocok dengan id slot dari partisi sistem, seperti system_a dalam contoh ini.

Berkontribusi ke GSI

Android menyambut baik kontribusi Anda untuk pengembangan GSI. Anda dapat terlibat dan membantu meningkatkan GSI dengan:

  • Membuat patch GSI. DESSERT -gsi bukan cabang pengembangan dan hanya menerima cherrypick dari cabang master AOSP, jadi untuk mengirimkan patch GSI, Anda harus:
    1. Kirimkan patch ke cabang master AOSP .
    2. Cherrypick patch ke DESSERT -gsi .
    3. Laporkan bug agar cherrypick ditinjau.
  • Melaporkan bug GSI atau membuat saran lain. Tinjau petunjuk di Melaporkan Bug , lalu jelajahi atau ajukan bug GSI .

Tips

Mengubah mode bilah navigasi menggunakan adb

Saat melakukan booting dengan GSI, mode menu navigasi dikonfigurasi oleh penggantian vendor. Anda dapat mengubah mode bilah navigasi dengan menjalankan perintah adb berikut dalam runtime.

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

Dimana mode bisa threebutton , dua twobutton , gestural , dan sebagainya.