Pengembangan Manifes Perangkat

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

Mengembangkan perangkat baru

Saat menentukan Versi Target FCM 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 Target FCM 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> tingkat atas.

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

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

Meningkatkan citra vendor

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

Meningkatkan HAL

Selama peningkatan citra vendor, vendor dapat mengimplementasikan versi HAL baru asalkan nama HAL, nama antarmuka, dan nama instans sama. Misalnya:

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

Ringkasnya, mengingat compatibility_matrix.2.xml memerlukan audio 2.0 dan compatibility_matrix.3.xml memerlukan 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 peningkatan citra vendor, vendor juga dapat meningkatkan Versi FCM Target untuk menentukan Versi FCM yang ditargetkan yang dapat digunakan oleh citra vendor yang ditingkatkan. Untuk meningkatkan Versi Target FCM suatu perangkat, vendor perlu:

  1. Terapkan semua Versi HAL baru yang diperlukan untuk Versi Target FCM.
  2. Ubah Versi HAL di 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-nya setidaknya harus lawas. Namun, manifes perangkat mendeklarasikan 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 perangkat tersebut 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 menghilangkan persyaratan kernel dari paket OTA yang dihasilkan.
  • Saat memperbarui ke Android 11, Anda dapat menyetel flag build PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS untuk memeriksa kompatibilitas VINTF saat paket pembaruan dibuat.

Untuk informasi selengkapnya tentang tanda 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 otomatis disetel ke true . Ketika flag disetel ke true , skrip akan 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, pembuatan paket OTA membaca versi dan konfigurasi kernel untuk memeriksa kompatibilitas.

Jika skrip gagal mengekstrak informasi ini untuk image 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 yang dibuat .config . Kedua variabel harus diperbarui ketika image kernel diperbarui.
  • Alternatifnya, setel PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS ke false untuk melewati pemeriksaan persyaratan kernel. Hal ini tidak disarankan karena ketidakcocokan apa pun disembunyikan dan hanya ditemukan saat menjalankan pengujian VTS setelah pembaruan.

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