Saat mengembangkan dan merilis perangkat baru, vendor dapat menentukan dan mendeklarasikan versi FCM target dalam manifes perangkat (DM). Saat mengupgrade image vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan menambahkan versi FCM target.
Mengembangkan perangkat baru
Saat menentukan versi FCM target perangkat untuk perangkat baru:
- Biarkan
DEVICE_MANIFEST_FILE
danPRODUCT_ENFORCE_VINTF_MANIFEST
tidak 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_MANIFEST
ketrue
.
Merilis perangkat baru
Saat perangkat baru dirilis, versi FCM target 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 versi FCM target yang sama dengan 3 (versi yang lebih tinggi 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 menambahkan 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 target FCM versi
2, yang menerapkan HAL audio 2.0
android.hardware.audio@2.0::IDeviceFactory/default
yang diperlukan. - 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 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 HAL audio 2.0 dalam hal fungsi.
Untuk meringkas, 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 |
Mengupgrade versi FCM target
Selama upgrade image vendor, vendor juga dapat menambahkan versi FCM target untuk menentukan versi FCM target yang dapat digunakan oleh image vendor yang diupgrade. Untuk meningkatkan versi FCM target perangkat, vendor harus:
- Terapkan semua Versi HAL baru yang diperlukan untuk versi FCM target.
- Ubah Versi HAL di 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 setidaknya versi lama. Namun, manifes
perangkat mendeklarasikan FCM target 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 menerapkan beberapa HAL yang diperlukan oleh
compatibility_matrix.3.xml
(seperti audio 4.0, kesehatan 2.0, dll.),
hal ini 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 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 flag build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
dan membiarkan
flag tidak ditetapkan untuk perangkat yang diluncurkan dengan Android 9 atau
yang lebih lama.
- 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_REQUIREMENTS
untuk memeriksa kompatibilitas VINTF saat paket update dibuat.
Untuk mengetahui informasi selengkapnya tentang flag build ini, lihat Mengupdate perangkat dari Android 10.
Mengupdate perangkat dari Android 10
Android 10 memperkenalkan flag build baru,
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
. Untuk perangkat
yang diluncurkan dengan Android 10, flag ini
otomatis ditetapkan 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 akan 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 pada AOSP.
- Tetapkan
BOARD_KERNEL_VERSION
ke versi kernel danBOARD_KERNEL_CONFIG_FILE
ke jalur file konfigurasi kernel yang di-build.config
. Kedua variabel harus diperbarui saat image kernel diupdate. - Atau, tetapkan
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
kefalse
untuk 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
.