Saat mengembangkan dan merilis perangkat baru, vendor dapat menentukan dan mendeklarasikan menargetkan versi FCM dalam manifes perangkat (DM). Saat mengupgrade image vendor untuk perangkat lama, vendor dapat memilih untuk menerapkan versi HAL baru dan penambahan versi FCM target.
Mengembangkan perangkat baru
Saat menentukan versi FCM target perangkat untuk perangkat baru:
- Keluar dari
DEVICE_MANIFEST_FILE
danPRODUCT_ENFORCE_VINTF_MANIFEST
tidak ditentukan. - Implementasikan HAL untuk versi FCM target.
- Tulis file manifes perangkat yang benar.
- Menulis versi FCM target ke file manifes perangkat.
- Setel
DEVICE_MANIFEST_FILE
. - Setel
PRODUCT_ENFORCE_VINTF_MANIFEST
ketrue
.
Merilis perangkat baru
Ketika perangkat baru dirilis, versi FCM target awal harus
ditentukan dan dideklarasikan dalam manifes perangkat sebagai
"target-level
" di tingkat teratas
elemen <manifest>
.
Misalnya, perangkat yang diluncurkan dengan Android 9 harus memiliki target FCM versi sama dengan 3 (versi lebih tinggi yang tersedia saat ini). Untuk mendeklarasikan hal ini dalam manifes perangkat:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Upgrade gambar vendor
Saat mengupgrade image vendor untuk perangkat lama, vendor dapat memilih untuk mengimplementasikan versi HAL baru dan meningkatkan versi FCM target.
Upgrade 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 dirilis dengan versi FCM target
2, yang menerapkan 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 lengkap untuk meningkatkan
ke 4.0 HAL, yang mengimplementasikan
android.hardware.audio@4.0::IDeviceFactory/default
. - Meskipun
compatibility_matrix.2.xml
menentukan audio 2.0 persyaratan pada image vendor dengan FCM target versi 2 telah longgar karena kerangka kerja Android 9 (versi FCM 3) menganggap audio 4.0 sebagai pengganti audio 2.0 HAL dalam hal fungsi.
Untuk meringkas, mengingat bahwa 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 meningkatkan FCM target untuk menentukan versi FCM yang ditargetkan, image vendor yang diupgrade dapat berfungsi kami. Untuk menambahkan perangkat versi FCM target, vendor harus:
- Terapkan semua Versi HAL baru yang diperlukan untuk versi FCM target.
- Memodifikasi Versi HAL di file manifes perangkat.
- Mengubah versi FCM target di file manifes perangkat.
- Hapus versi HAL yang sudah tidak digunakan lagi.
Misalnya, perangkat Google Pixel dan Pixel XL yang diluncurkan dengan Android 7.0
jadi versi FCM targetnya setidaknya harus berupa versi lama. Namun, perangkat
manifes mendeklarasikan FCM versi 2 target karena image vendor memiliki
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 FCM target tidak dapat diupgrade.
Misalnya, perangkat Google Pixel 2 dan Pixel 2 XL memiliki target FCM versi 2.
Sementara mereka mengimplementasikan
beberapa HAL yang dibutuhkan oleh
compatibility_matrix.3.xml
(seperti audio 4.0, health 2.0, dll.),
mereka tidak menghapus android.hardware.radio.deprecated@1.0
, yang
tidak digunakan lagi di FCM versi 3 (Android 9). Oleh karena itu,
perangkat tidak dapat mengupgrade versi FCM target ke versi 3.
Mengubah persyaratan kernel selama OTA
Mengupdate perangkat dari Android 9 atau yang lebih rendah
Pada perangkat dengan Android 9 atau yang lebih lama, pastikan CL berikut yang diseleksi:
Perubahan ini memperkenalkan flag build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
dan keluar dari
flag tidak disetel untuk perangkat yang diluncurkan dengan Android 9 atau
lebih rendah.
- Saat mengupdate ke Android 10, Klien OTA di perangkat yang menjalankan Android 9 atau yang lebih rendah tidak memeriksa persyaratan {i>kernel<i} dalam paket OTA dengan benar. Perubahan ini diperlukan untuk menghapus persyaratan kernel dari OTA yang dihasilkan paket.
-
Saat mengupdate ke Android 11, Anda dapat menyetel atribut
Flag build
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
untuk memeriksa VINTF kompatibilitas saat paket update dibuat.
Untuk 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
diluncurkan dengan Android 10, penanda ini
otomatis ditetapkan ke true
. Ketika penanda diatur ke
true
, skrip mengekstrak versi kernel dan kernel
konfigurasi dari image {i>
kernel<i} yang terinstal.
- Saat mengupdate ke Android 10, paket update OTA berisi konfigurasi dan versi {i>kernel<i}. Klien OTA di perangkat yang menjalankan Android 10 membaca informasi ini untuk memeriksa kompatibilitas mundur.
- Saat mengupdate ke Android 11, genre paket OTA membaca versi {i>kernel<i} dan konfigurasi untuk memeriksa kompatibilitas.
Jika skrip gagal diekstrak informasi ini untuk image kernel Anda, lakukan salah satu hal berikut:
- Mengedit skrip untuk mendukung format kernel Anda dan berkontribusi pada AOSP.
- Menyetel
BOARD_KERNEL_VERSION
ke versi kernel danBOARD_KERNEL_CONFIG_FILE
ke jalur kernel yang dibangun file konfigurasi.config
. Kedua variabel harus diperbarui ketika image {i>kernel<i} diperbarui. - Atau, setel
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
hinggafalse
untuk melewati pemeriksaan persyaratan kernel. Hal ini tidak disarankan karena ketidakcocokan apa pun disembunyikan dan hanya ditemukan saat menjalankan uji VTS setelah pembaruan.
Anda dapat melihat kode sumber skrip ekstraksi informasi kernel
extract_kernel.py