Pengembangan Manifes Perangkat

Saat mengembangkan dan merilis perangkat baru, vendor dapat menentukan dan mendeklarasikan Versi Target FCM di manifes perangkat (DM). Saat memutakhirkan citra vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan meningkatkan Versi Target FCM.

Mengembangkan perangkat baru

Saat menentukan Versi FCM Target perangkat untuk perangkat baru:

  1. Biarkan DEVICE_MANIFEST_FILE dan PRODUCT_ENFORCE_VINTF_MANIFEST tidak ditentukan.
  2. Menerapkan HAL untuk Versi Target FCM.
  3. Tulis file manifes perangkat yang benar.
  4. Tulis Versi FCM Target ke file manifes perangkat.
  5. Setel DEVICE_MANIFEST_FILE .
  6. Setel PRODUCT_ENFORCE_VINTF_MANIFEST ke true .

Merilis perangkat baru

Saat perangkat baru dirilis, Versi Target FCM awalnya perlu ditentukan dan dideklarasikan dalam manifes perangkat sebagai atribut " target-level " di elemen <manifest> level teratas.

Misalnya, perangkat yang diluncurkan dengan Android 9 harus memiliki Target FCM Version sama dengan 3 (versi yang lebih tinggi tersedia saat ini). Untuk mendeklarasikan ini dalam manifes perangkat:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

Meningkatkan citra vendor

Saat memutakhirkan citra vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan meningkatkan Versi Target FCM.

Meningkatkan HAL

Selama pemutakhiran citra vendor, vendor dapat mengimplementasikan versi HAL baru asalkan nama HAL, nama antarmuka, dan nama instans adalah sama. Sebagai contoh:

  • Perangkat Google Pixel 2 dan Pixel 2 XL dirilis dengan Target FCM Versi 2, yang mengimplementasikan audio 2.0 HAL yang diperlukan android.hardware.audio@2.0::IDeviceFactory/default .
  • Untuk audio 4.0 HAL yang dirilis dengan Android 9, perangkat Google Pixel 2 dan Pixel 2 XL dapat menggunakan OTA penuh untuk meningkatkan ke HAL 4.0, yang mengimplementasikan android.hardware.audio@4.0::IDeviceFactory/default .
  • Meskipun compatibility_matrix.2.xml hanya menetapkan audio 2.0, persyaratan pada gambar vendor dengan Target FCM Versi 2 telah dilonggarkan karena kerangka kerja Android 9 (FCM Versi 3) menganggap audio 4.0 sebagai pengganti audio 2.0 HAL dalam hal fungsionalitas .

Ringkasnya, mengingat compatibility_matrix.2.xml membutuhkan audio 2.0 dan compatibility_matrix.3.xml membutuhkan audio 4.0, persyaratannya adalah sebagai berikut:

Versi FCM (Sistem) Versi FCM Target (Vendor) Persyaratan
2 (8.1) 2 (8.1) Audio 2.0
3 (9) 2 (8.1) Audio 2.0 atau 4.0
3 (9) 3 (9) Audio 4.0

Meningkatkan Versi Target FCM

Selama pemutakhiran citra vendor, vendor juga dapat meningkatkan Versi FCM Target untuk menentukan Versi FCM yang ditargetkan yang dapat digunakan oleh citra vendor yang ditingkatkan. Untuk menabrak Versi Target FCM perangkat, vendor perlu:

  1. Terapkan semua Versi HAL baru yang diperlukan untuk Versi Target FCM.
  2. Ubah Versi HAL dalam file manifes perangkat.
  3. Ubah Versi Target FCM di file manifes perangkat.
  4. Hapus versi HAL yang tidak digunakan lagi.

Misalnya, perangkat Google Pixel dan Pixel XL diluncurkan dengan Android 7.0 sehingga Versi Target FCM mereka setidaknya harus lawas. Namun, manifes perangkat menyatakan Target FCM Versi 2 karena gambar vendor telah diperbarui agar sesuai dengan compatibility_matrix.2.xml :

<manifest version="1.0" type="device" target-level="2">

Jika vendor tidak menerapkan semua versi HAL baru yang diperlukan atau tidak menghapus versi HAL yang tidak digunakan lagi, Versi Target FCM tidak dapat ditingkatkan.

Misalnya, perangkat Google Pixel 2 dan Pixel 2 XL memiliki Target FCM Versi 2. Meskipun mengimplementasikan beberapa HAL yang diperlukan oleh compatibility_matrix.3.xml (seperti audio 4.0, health 2.0, dll.), perangkat tersebut tidak menghapus android.hardware.radio.deprecated@1.0 , yang tidak digunakan lagi di FCM Versi 3 (Android 9). Oleh karena itu, perangkat ini tidak dapat meningkatkan Versi Target FCM ke 3.

Mengamanatkan persyaratan kernel selama OTA

Memperbarui perangkat dari Android 9 atau lebih rendah

Pada perangkat dengan Android 9 atau lebih rendah, pastikan CL berikut dipilih:

Perubahan ini memperkenalkan flag build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS dan membiarkan flag tidak disetel untuk perangkat yang diluncurkan dengan Android 9 atau lebih rendah.

  • Saat memperbarui ke Android 10, klien OTA pada perangkat yang menjalankan Android 9 atau lebih rendah tidak memeriksa persyaratan kernel dalam paket OTA dengan benar. Perubahan ini diperlukan untuk menghapus persyaratan kernel dari paket OTA yang dihasilkan.
  • Saat memperbarui ke Android 11, adalah opsional untuk menyetel flag build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS untuk memeriksa kompatibilitas VINTF saat paket pembaruan dibuat.

Untuk informasi selengkapnya tentang flag build ini, lihat Memperbarui perangkat dari Android 10 .

Memperbarui perangkat dari Android 10

Android 10 memperkenalkan flag build baru, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS . Untuk perangkat yang diluncurkan dengan Android 10, tanda ini secara otomatis disetel ke true . Ketika flag disetel ke true , skrip mengekstrak versi kernel dan konfigurasi kernel dari image kernel yang diinstal.

  • Saat memperbarui ke Android 10, paket pembaruan OTA berisi versi dan konfigurasi kernel. Klien OTA pada perangkat yang menjalankan Android 10 membaca informasi ini untuk memeriksa kompatibilitas.
  • Saat memperbarui ke Android 11, genre paket OTA membaca versi kernel dan konfigurasi untuk memeriksa kompatibilitas.

Jika skrip gagal mengekstrak informasi ini untuk citra kernel Anda, lakukan salah satu hal berikut:

  • Edit skrip untuk mendukung format kernel Anda dan berkontribusi pada AOSP.
  • Setel BOARD_KERNEL_VERSION ke versi kernel dan BOARD_KERNEL_CONFIG_FILE ke jalur file konfigurasi kernel .config . Kedua variabel harus diperbarui ketika gambar kernel diperbarui.
  • Atau, setel PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS ke false untuk melewati pemeriksaan persyaratan kernel. Ini tidak disarankan karena ketidakcocokan apa pun disembunyikan dan hanya ditemukan saat menjalankan tes VTS setelah pembaruan.

Anda dapat melihat kode sumber dari skrip ekstraksi informasi kernel extract_kernel.py .