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

Gambar Sistem Umum

Gambar sistem generik (GSI) adalah gambar sistem dengan konfigurasi yang disesuaikan untuk perangkat Android. Ini dianggap sebagai implementasi Android murni dengan Android Open Source Project (AOSP) kode dimodifikasi bahwa setiap perangkat Android yang menjalankan Android 8.1 atau lebih tinggi dapat berjalan dengan sukses.

GSI digunakan untuk menjalankan pengujian VTS dan CTS-on-GSI. Sistem gambar perangkat Android diganti dengan GSI kemudian diuji dengan vendor Test Suite (VTS) dan Uji Kompatibilitas Suite (CTS) untuk memastikan bahwa vendor perangkat alat antarmuka benar dengan versi terbaru dari Android.

Untuk memulai GSIS, meninjau bagian berikut untuk rincian tentang konfigurasi GSI (dan varians diperbolehkan), jenis (Android GSI dan Legacy GSI), dan penjual binari dan VNDK dependensi . Ketika Anda siap untuk menggunakan GSI, men-download dan membangun GSI target perangkat Anda, maka flash GSI untuk perangkat Android.

Konfigurasi dan varians GSI

GSI Android saat ini memiliki konfigurasi berikut:

  • Tiga kali lipat. GSI termasuk dukungan penuh untuk perubahan berbasis HIDL arsitektur (juga dikenal sebagai Treble) 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 lebih jelasnya, lihat sumber Arsitektur .)
  • Verifikasi boot. GSI tidak termasuk memverifikasi booting solusi (seperti vboot 1.0 atau AVB ). Untuk mem-flash GSI ke perangkat yang diluncurkan di 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 sistem-sebagai-akar layout partisi.

GSI Android 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).

Target GSI untuk uji kepatuhan Treble

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

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

Semua GSIS dibangun dari Android 10 basis kode, dan setiap arsitektur CPU memiliki GSI biner (lihat daftar target membangun di Gedung GSIS ).

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:

  • Pembuatan pengguna. GSI memiliki build pengguna dari Android 10. Di Android 10, GSI build pengguna dapat digunakan dalam pengujian kepatuhan CTS-on-GSI/VTS. Referensi VTS Pengujian dengan Debug Ramdisk untuk detail.
  • Format yang tidak dapat dipisahkan. GSI dengan target aosp_$arch dibangun dengan format yang unsparsed. Anda dapat menggunakan img2simg untuk mengkonversi GSI unsparsed ke format jarang jika diperlukan.
  • Sistem-sebagai-root. Warisan GSI membangun sasaran bernama aosp_$arch_a telah dihapus. Untuk perangkat upgrade dari Android 8 atau 8.1 untuk Android 10 dengan ramdisk dan non-sistem-sebagai-root, gunakan warisan GSI aosp_$arch_ab . Upgrade init di ramdisk mendukung system.img OEM dengan sistem-sebagai-akar tata letak.

Untuk perangkat uji peluncuran di Android 9 atau 10 dengan CTS-on-GSI, menggunakan Android GSI membangun target .

GSI lama

Legacy GSIS bernama dengan akhiran _ab (misalnya, aosp_arm64_ab ). GSI ini dibuat dari hierarki sumber Android 10 tetapi berisi konfigurasi kompatibel mundur berikut 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 warisan menggunakan direktori sebagai gunung pointer (misalnya, /bluetooth , /firmware/radio , dan /persist ).

Untuk perangkat uji peluncuran di Android 8 atau 8.1 dengan CTS-on-GSI, menggunakan Legacy GSI membangun target .

Perubahan GSI Android 9

GSI Android 9 menyertakan perubahan besar berikut dari GSI sebelumnya:

  • Menggabungkan GSI dan emulator. GSIS dibangun dari sistem gambar produk emulator, misalnya, aosp_arm64 dan aosp_x86 .
  • Sistem-sebagai-root. Dalam versi sebelumnya dari Android, perangkat yang tidak mendukung A / update B bisa me-mount sistem gambar di bawah /system direktori. 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 adalah opsional. Mulai dari Android 9, VNDK adalah wajib, sehingga BOARD_VNDK_VERSION harus diatur.
  • Properti sistem yang kompatibel. Android 9 memungkinkan cek akses untuk properti sistem yang kompatibel ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ).

Perubahan Keymaster Android 9

Dalam versi sebelumnya dari Android, perangkat menerapkan Keymaster 3 atau lebih rendah diminta untuk memverifikasi bahwa info versi ( ro.build.version.release dan ro.build.version.security_patch ) dilaporkan oleh sistem berjalan sesuai info versi dilansir bootloader. Informasi tersebut biasanya diperoleh dari header gambar boot.

Di Android 9 dan yang 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 memodifikasi implementasi Keymaster untuk melewati verifikasi (atau meningkatkan ke Keymaster 4). Untuk rincian tentang Keymaster, lihat Keystore Hardware yang didukung .

Biner vendor dan dependensi VNDK

Pemutakhiran perangkat ke Android 10 memiliki jalur pemutakhiran yang berbeda bergantung pada versi biner vendor yang digunakan pada perangkat dan konfigurasi terkait VNDK yang digunakan untuk membuat perangkat. Tabel berikut merangkum dukungan GSI lama untuk perangkat yang diupgrade.

Kasus penggunaan Penjaja
binari
Versi: kapan
BOARD_VNDK_VERSION GSI lama
versi binari sistem
Dukungan GSI lama
0 8.0 (setiap) 10 Tidak
1 8.1 (kosong) 10 Tidak
2 8.1 current 10 Ya
3 10 current 10 Ya

Kasus umum didukung penggunaan yang paling adalah # 2, di mana warisan perangkat dukungan GSIS menjalankan Android 8.1 yang dibangun dengan BOARD_VNDK_VERSION set untuk current .

Kasus #1 tidak didukung. Dalam hal ini, warisan GSIS TIDAK mendukung perangkat yang menjalankan Android 8.1 di mana BOARD_VNDK_VERSION dihilangkan dari membangun. Perangkat ini tidak dapat didukung karena biner vendornya bergantung pada library bersama Android 8.1 non-VNDK, yang tidak disertakan 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 (use case # 2).

    ATAU

  • Port/upgrade binari vendor agar bergantung pada pustaka bersama dari Android 10 (kasus penggunaan #3).

Mengunduh GSI

Anda dapat men-download prebuilt GSIS dari integrasi berkesinambungan (CI) situs AOSP di ci.android.com . Jika jenis GSI untuk platform perangkat keras Anda tidak tersedia untuk diunduh, lihat bagian berikut untuk detail tentang membuat GSI untuk target tertentu.

Membangun GSI

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

Untuk membangun GSI, mendirikan source Android dengan men-download dari cabang GSI dan memilih GSI membangun sasaran . Gunakan tabel target build di bawah untuk menentukan versi GSI yang benar untuk perangkat Anda. Setelah membangun selesai, GSI adalah sistem gambar (yaitu, system.img ) dan muncul dalam output folder out/target/product/ generic_arm64 . Membangun juga output vbmeta.img , yang dapat Anda gunakan untuk menonaktifkan memverifikasi boot pada perangkat yang menggunakan Android Boot Verified .

Misalnya, untuk membangun GSI membangun sasaran aosp_arm64-userdebug di GSI cabang 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 pembuatan GSI Android

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

nama GSI lengkungan CPU Bitness antarmuka pengikat Sistem-sebagai-root Membangun target
aosp_arm LENGAN 64 kamu aosp_arm-user
aosp_arm-userdebug
aosp_arm64 ARM64 64 kamu aosp_arm64-user
aosp_arm64-userdebug
aosp_x86 x86 64 kamu aosp_x86-user
aosp_x86-userdebug
aosp_x86_64 x86-64 64 kamu aosp_x86_64-user
aosp_x86_64-userdebug

Target pembuatan GSI lawas

Berikut warisan GSI membangun target adalah untuk perangkat upgrade dari Android 8.0 atau 8.1 untuk nama Android 10. Legacy GSI termasuk akhiran _ab untuk membedakan mereka dari Android 10 nama GSI.

nama GSI lengkungan CPU Bitness antarmuka pengikat Sistem-sebagai-root Membangun target
aosp_arm_ab LENGAN 32 kamu aosp_arm_ab-userdebug
aosp_arm_64b_ab LENGAN 64 kamu aosp_arm_64b_ab-userdebug
aosp_arm64_ab ARM64 64 kamu aosp_arm64_ab-userdebug
aosp_x86_ab x86 32 kamu aosp_x86_ab-userdebug
aosp_x86_64_ab x86-64 64 kamu 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 agar diterapkan ke semua perangkat. Tanyakan kepada produsen perangkat Android untuk instruksi flashing eksplisit. Gunakan langkah-langkah berikut sebagai pedoman umum:

  1. Pastikan perangkat memiliki hal berikut:
    • treblized
    • Sebuah metode untuk membuka perangkat (sehingga mereka dapat melintas dengan menggunakan fastboot )
    • Sebuah metode untuk menonaktifkan memverifikasi boot (misalnya, vboot 1.0 atau AVB )
    • Negara dibuka untuk membuatnya flashable via fastboot (Untuk memastikan bahwa Anda memiliki versi terbaru dari fastboot , membangunnya dari source 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 fastboot modus dan unlock bootloader . Nonaktifkan memverifikasi boot (AVB) dengan berkedip vbmeta.img :
    $ fastboot --disable-verification flash vbmeta vbmeta.img
  2. Perangkat yang mendukung fastbootd juga perlu boot ke fastbootd oleh:
    $ fastboot reboot fastboot
  3. Menghapus dan flash GSI untuk partisi sistem:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. Menghapus data pengguna dan menghapus data dari partisi lain yang diperlukan (misalnya, data pengguna dan partisi sistem):
    $ fastboot -w
  5. Reboot:
    $ fastboot reboot
Pada Android 10 perangkat yang memiliki partisi sistem yang lebih kecil, pesan kesalahan berikut mungkin muncul ketika berkedip GSI:
    Resizing 'system_a'    FAILED (remote: 'Not enough space to resize partition')
    fastboot: error: Command failed
Gunakan perintah berikut untuk menghapus partisi produk dan membebaskan ruang untuk partisi sistem. Ini menyediakan ruang ekstra untuk flash GSI:
$ fastboot delete-logical-partition product_a
The postfix _a harus sesuai slot id dari partisi sistem, seperti system_a dalam contoh ini.

Berkontribusi pada GSI

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

  • Membuat tambalan GSI. DESSERT -gsi tidak cabang pengembangan dan hanya menerima Cherrypicks dari cabang master AOSP, sehingga untuk mengirimkan patch GSI, Anda harus:
    1. Mengirimkan patch ke AOSP master cabang.
    2. Cherrypick patch untuk DESSERT -gsi .
    3. Ajukan bug agar cherrypick ditinjau.
  • Pelaporan GSI bug atau membuat saran lainnya. Tinjau petunjuk di Bugs Pelaporan , lalu browse atau berkas GSI bug .

Tips

Mengubah mode bilah navigasi menggunakan adb

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

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

Dimana mode dapat threebutton , twobutton , gestural , dan sebagainya.