Saat mengembangkan dan merilis perangkat baru, vendor dapat menentukan dan mendeklarasikan target versi FCM dalam manifes perangkat (DM). Saat mengupgrade image vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan menaikkan versi FCM target.
Mengembangkan perangkat baru
Saat menentukan versi FCM target perangkat untuk perangkat baru:
- Biarkan
DEVICE_MANIFEST_FILEdanPRODUCT_ENFORCE_VINTF_MANIFESTtidak ditentukan. - Terapkan HAL untuk versi FCM target.
- Tulis file manifes perangkat yang benar.
- Tulis versi FCM target ke file manifes perangkat.
- Setel
DEVICE_MANIFEST_FILE. - Setel
PRODUCT_ENFORCE_VINTF_MANIFESTketrue.
Merilis perangkat baru
Saat perangkat baru dirilis, versi FCM target awalnya harus ditentukan dan dideklarasikan dalam manifes perangkat sebagai atribut "target-level" dalam elemen <manifest> tingkat teratas.
Misalnya, perangkat yang diluncurkan dengan Android 9 harus memiliki versi FCM target yang sama dengan 3 (versi yang lebih tinggi yang tersedia saat ini). Untuk mendeklarasikannya dalam manifes perangkat:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Mengupgrade gambar vendor
Saat mengupgrade image vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan menaikkan versi FCM target.
Mengupgrade HAL
Selama upgrade image vendor, vendor dapat menerapkan versi HAL baru asalkan nama HAL, nama antarmuka, dan nama instance sama. Contoh:
- Perangkat Google Pixel 2 dan Pixel 2 XL yang dirilis dengan versi FCM target 2, yang menerapkan HAL audio 2.0 yang diperlukan
android.hardware.audio@2.0::IDeviceFactory/default. - Untuk HAL audio 4.0 yang dirilis dengan Android 9, perangkat Google Pixel 2 dan Pixel 2 XL dapat menggunakan OTA penuh untuk mengupgrade ke HAL 4.0, yang menerapkan
android.hardware.audio@4.0::IDeviceFactory/default. - Meskipun
compatibility_matrix.2.xmlmenentukan hanya audio 2.0, persyaratan pada image vendor dengan FCM versi 2 yang ditargetkan telah dilonggarkan karena framework Android 9 (FCM versi 3) menganggap audio 4.0 sebagai pengganti HAL audio 2.0 dalam hal fungsi.
Singkatnya, mengingat compatibility_matrix.2.xml memerlukan
audio 2.0 dan compatibility_matrix.3.xml memerlukan audio 4.0, maka
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 |
Mengupgrade versi FCM target
Selama upgrade image vendor, vendor juga dapat menaikkan versi FCM target untuk menentukan versi FCM target yang dapat digunakan oleh image vendor yang diupgrade. Untuk mengupgrade versi FCM target perangkat, vendor perlu:
- Terapkan semua Versi HAL baru yang diperlukan untuk versi FCM target.
- Ubah Versi HAL dalam file manifes perangkat.
- Ubah versi FCM target dalam file manifes perangkat.
- Menghapus versi HAL yang tidak digunakan lagi.
Misalnya, perangkat Google Pixel dan Pixel XL diluncurkan dengan Android 7.0, sehingga versi FCM targetnya harus minimal versi lama. Namun, device
manifest mendeklarasikan target FCM versi 2 karena image vendor telah
diupdate 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 FCM target tidak dapat diupgrade.
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.),
HAL tersebut tidak menghapus android.hardware.radio.deprecated@1.0, yang tidak digunakan lagi
pada FCM versi 3 (Android 9). Oleh karena itu, perangkat ini tidak dapat mengupgrade versi FCM target ke 3.
Mewajibkan persyaratan kernel selama OTA
Mengupdate perangkat dari Android 9 atau yang lebih lama
Di perangkat dengan Android 9 atau yang lebih lama, pastikan CL berikut dipilih:
Perubahan ini memperkenalkan tanda build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS dan membiarkan
tanda tidak disetel untuk perangkat yang diluncurkan dengan Android 9 atau
yang lebih rendah.
- Saat mengupdate ke Android 10, klien OTA di perangkat yang menjalankan Android 9 atau yang lebih rendah tidak memeriksa persyaratan kernel dalam paket OTA dengan benar. Perubahan ini diperlukan untuk menghapus persyaratan kernel dari paket OTA yang dihasilkan.
-
Saat mengupdate ke Android 11, Anda dapat menetapkan
flag build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSuntuk memeriksa kompatibilitas VINTF saat paket update dibuat.
Untuk mengetahui informasi selengkapnya tentang tanda build ini, lihat Memperbarui perangkat dari Android 10.
Memperbarui perangkat dari Android 10
Android 10 memperkenalkan tanda build baru,
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS. Untuk perangkat yang diluncurkan dengan Android 10, flag ini otomatis disetel ke true. Jika tanda ditetapkan ke
true, skrip akan mengekstrak versi kernel dan konfigurasi
kernel dari image kernel yang diinstal.
- Saat mengupdate ke Android 10, paket update OTA berisi versi dan konfigurasi kernel. Klien OTA di perangkat yang menjalankan Android 10 membaca informasi ini untuk memeriksa kompatibilitas.
- Saat mengupdate 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 tindakan berikut:
- Edit skrip untuk mendukung format kernel Anda dan berkontribusi ke AOSP.
- Tetapkan
BOARD_KERNEL_VERSIONke versi kernel danBOARD_KERNEL_CONFIG_FILEke jalur file konfigurasi kernel yang dibuat.config. Kedua variabel harus diperbarui saat image kernel diperbarui. - Atau, tetapkan
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSkefalseuntuk melewati pemeriksaan persyaratan kernel. Hal ini tidak direkomendasikan karena inkompatibilitas apa pun disembunyikan dan hanya ditemukan saat menjalankan pengujian VTS setelah update.
Anda dapat melihat kode sumber skrip ekstraksi informasi kernel
extract_kernel.py.