Bagian ini menjelaskan kerangka kerja dan matriks kompatibilitas perangkat dan skema matriks kompatibilitas . Untuk aturan kecocokan, lihat Aturan Pencocokan .
Matriks kompatibilitas kerangka kerja (FCM)
Matriks kompatibilitas kerangka kerja (FCM) menjelaskan persyaratan kerangka kerja pada perangkat yang dijalankannya. Matriks kompatibilitas kerangka kerja terdiri dari matriks kompatibilitas sistem, matriks kompatibilitas produk , dan matriks kompatibilitas system_ext . Persyaratan FCM harus dipenuhi oleh manifes perangkat (persyaratan yang diterapkan pada waktu pembuatan, waktu proses, dan dalam VTS).
FCM system_ext dan FCM produk merupakan pelengkap dari FCM khusus perangkat (dipasang di partisi sistem).
- FCM perangkat harus mencerminkan persyaratan modul di partisi sistem .
- FCM system_ext harus mencerminkan persyaratan dengan modul di partisi system_ext.
- FCM produk harus mencerminkan persyaratan dengan modul di partisi produk .
Semua FCM harus selaras dengan modifikasi OEM pada kerangka kerja di sistem, produk, dan partisi system_ext. Misalnya, jika aplikasi yang diinstal di partisi produk menggunakan ekstensi vendor antarmuka HAL, persyaratan antarmuka HAL harus dideklarasikan di FCM produk.
Contoh file matriks kompatibilitas sistem:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework" level="3"> <hal> <name>android.hardware.camera</name> <version>1.0</version> <version>3.1-4</version> <interface> <name>ICameraProvider</name> <instance>default</instance> <regex-instance>[a-z_]+/[0-9]+</regex-instance> </interface> </hal> <hal> <name>android.hardware.nfc</name> <version>1.0</version> <interface> <name>INfc</name> <instance>default</instance> </interface> </hal> <hal optional="true"> <name>android.hardware.graphics.composer</name> <version>2.1</version> <interface> <name>IComposer</name> <instance>default</instance> </interface> </hal> <hal format="aidl" optional="true"> <name>android.hardware.light</name> <version>1-2</version> <interface> <name>ILights</name> <instance>default</instance> </interface> </hal> <hal format="native"> <name>GL</name> <version>1.1</version> <version>3.0</version> </hal> <hal format="native"> <name>EGL</name> <version>1.1</version> </hal> <kernel version="3.18.51"> <!-- common configs --> </kernel> <kernel version="3.18.51"> <!-- arm specific configs --> <condition> <config> <key>CONFIG_ARM</key> <value type="tristate">y</value> </config> <condition> <config> <key>CONFIG_A</key> <value type="string"></value> </config> <config> <key>CONFIG_B</key> <value type="tristate">y</value> </config> </kernel> <kernel version="4.1.22"> <!-- common configs --> <config> <key>CONFIG_A</key> <value type="string">foo</value> </config> <config> <key>CONFIG_B2</key> <value type="int">1024</value> </config> </kernel> <sepolicy> <kernel-sepolicy-version>30</kernel-sepolicy-version> <sepolicy-version>25.0</sepolicy-version> <sepolicy-version>26.0-3</sepolicy-version> </sepolicy> <avb> <vbmeta-version>2.1</vbmeta-version> </avb> <xmlfile format="dtd"> <name>media_profile</name> <version>1.0</version> <path>/system/etc/media_profile_V1_0.dtd</path> </xmlfile> </compatibility-matrix>
Untuk detail selengkapnya, lihat Siklus Hidup FCM .
Matriks kompatibilitas produk
FCM produk adalah file matriks kompatibilitas kerangka kerja di partisi produk. Objek VINTF bergabung dengan FCM produk dengan FCM di sistem dan partisi system_ext saat runtime.
Contoh file FCM produk:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="framework"> <hal> <name>vendor.foo.camera</name> <version>1.0</version> <interface> <name>IBetterCamera</name> <instance>default</instance> </interface> </hal> </compatibility-matrix>
Matriks kompatibilitas System_ext
FCM system_ext adalah file matriks kompatibilitas kerangka kerja di partisi system_ext. Objek VINTF bergabung dengan system_ext FCM dengan FCM di sistem dan partisi produk saat runtime. Lihat matriks kompatibilitas produk untuk contoh file system_ext FCM.
Matriks kompatibilitas perangkat (DCM)
Matriks kompatibilitas perangkat menjelaskan serangkaian persyaratan yang diharapkan perangkat dari kerangka kerja (persyaratan yang diberlakukan saat peluncuran dan waktu OTA).
Contoh file DCM:
<?xml version="1.0" encoding="UTF-8"?> <!-- Comments, Legal notices, etc. here --> <compatibility-matrix version="1.0" type="device"> <hal> <name>android.hidl.manager</name> <version>1.0</version> <interface> <name>IServiceManager</name> <instance>default</instance> </interface> </hal> <hal> <name>android.hidl.memory</name> <version>1.0</version> <interface> <name>IMemory</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.hidl.allocator</name> <version>1.0</version> <interface> <name>IAllocator</name> <instance>ashmem</instance> </interface> </hal> <hal> <name>android.framework.sensor</name> <version>1.0</version> <interface> <name>ISensorManager</name> <instance>default</instance> </interface> </hal> <vendor-ndk> <version>27</version> </vendor-ndk> <system-sdk> <version>27</version> </system-sdk> </compatibility-matrix>
Skema matriks kompatibilitas
Bagian ini menjelaskan arti dari tag XML ini. Beberapa tag "wajib" dapat hilang dari file sumber di pohon sumber Android dan ditulis oleh assemble_vintf
pada waktu pembuatan. Tag "Diperlukan" harus ada dalam file yang sesuai di perangkat.
-
?xml
- Pilihan. Ini hanya memberikan informasi ke parser XML.
-
compatibility-matrix.version
- Diperlukan. Versi meta dari matriks kompatibilitas ini. Menjelaskan elemen yang diharapkan dalam matriks kompatibilitas. Tidak terkait dengan versi XML.
-
compatibility-matrix.type
- Diperlukan. Jenis matriks kompatibilitas ini:
-
"device"
: Matriks kompatibilitas perangkat. -
"framework"
: Matriks kompatibilitas kerangka kerja.
-
-
manifest.level
- Diperlukan untuk matriks kompatibilitas kerangka kerja. Di Android 12 dan yang lebih tinggi, diizinkan dalam file matriks kompatibilitas kerangka kerja di partisi product dan system_ext. Menentukan Versi Matriks Kompatibilitas Kerangka (Versi FCM) dari file ini. Jangan nyatakan ini dalam matriks kompatibilitas kerangka kerja khusus perangkat (yaitu
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- Opsional dan dapat diulang. Daftar HAL tunggal (HIDL atau asli) yang diperlukan oleh pemilik matriks kompatibilitas (kerangka atau perangkat) untuk hadir. Entri HAL dibedakan oleh elemen
<name>
; mungkin ada beberapa entri HAL dengan nama yang sama (menyiratkan kondisi "dan"). -
compatibility-matrix.hal.format
- Pilihan. Nilai dapat berupa salah satu dari:
-
"hidl"
: HIDL HAL. Ini adalah default. -
"aidl"
: AIDL HALs . Hanya berlaku pada matriks kompatibilitas meta-versi 2.0. -
"native"
: HAL asli.
-
-
compatibility-matrix.hal.optional
- Atribut adalah opsional dan default ke false. Menyatakan apakah HAL ini opsional bagi pemilik matriks kompatibilitas (kerangka atau perangkat). Jika entri
<hal>
ditandai sebagai opsional, artinya pemilik dapat bekerja dengan HAL ini, jika ada, tetapi tidak mengharuskannya untuk hadir. -
compatibility-matrix.hal.name
- Diperlukan. Nama paket lengkap dari HAL ini. Contoh:
-
android.hardware.camera
(HIDL atau AIDL HAL) -
GLES
(HAL asli, hanya membutuhkan nama)
-
-
compatibility-matrix.hal.version
- Daftar rentang versi (lihat kecocokan HAL ) yang menentukan versi yang diharapkan oleh pemilik matriks kompatibilitas (kerangka atau perangkat).
Untuk HIDL dan HAL asli, diperlukan, dapat diulang tanpa duplikat. Formatnya adalah salah satu dari berikut ini:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(setara denganMAJOR . MINOR - MINOR
)
Untuk AIDL HAL, tidak boleh ada di perangkat yang menjalankan Android 11 dan lebih rendah. Opsional pada perangkat yang menjalankan versi yang lebih baru. Jika ditentukan, formatnya adalah salah satu dari berikut ini:-
VERSION_MIN - VERSION_MAX
-
VERSION
(setara denganVERSION - VERSION
)
1
. -
-
compatibility-matrix.hal.interface
- Opsional, dapat diulang. Daftar antarmuka yang diperlukan dari HAL ini.
-
compatibility-matrix.hal.interface.name
- Diperlukan. Nama antarmuka.
-
compatibility-matrix.hal.interface.instance
- Opsional, dapat diulang. Daftar instance yang diperlukan dari antarmuka ini.
-
compatibility-matrix.hal.interface.regex-instance
- Opsional, dapat diulang. Daftar pola nama instans yang diperlukan pada antarmuka ini. Gunakan format Ekspresi Reguler Diperpanjang .
-
compatibility-matrix.kernel
- Opsional, dapat diulang. Tentukan daftar konfigurasi kernel yang diperlukan kerangka kerja pada setiap versi kernel.
Beberapa<kernel>
dengan<version>
yang sama bisa ada untuk menyiratkan hubungan "dan". Setiap<kernel>
adalah "fragmen" dari persyaratan yang diaktifkan hanya jika<conditions>
terpenuhi. -
compatibility-matrix.kernel.version
- Diperlukan. Versi kernel. Formatnya adalah
VERSION . MAJOR_REVISION . MINOR_REVISION
. Versi dan revisi utama harus sama persis. Revisi kecil mendefinisikan versi LTS minimum dari kernel yang diharapkan kerangka kerja. -
compatibility-matrix.kernel.condition
- Pilihan. Tidak boleh ada untuk
<kernel>
pertama dari setiap versi. Menentukan daftar kondisi. Hanya ketika kondisi terpenuhi, persyaratan yang dinyatakan dalam fragmen<kernel>
ini diaktifkan. -
compatibility-matrix.kernel.config
- Opsional, dapat diulang. Daftar item
CONFIG
yang harus cocok untuk versi kernel ini. Setiap itemCONFIG
adalah pasangan nilai kunci; item konfigurasi dibedakan berdasarkan kunci. -
compatibility-matrix.kernel.config.key
- Diperlukan. Nama kunci item
CONFIG
. Dimulai denganCONFIG_
. -
compatibility-matrix.kernel.config.value
- Diperlukan. Nilai item
CONFIG
. Format tergantung pada jenis:-
string
. Kutipan dihilangkan. -
int
. Nilai desimal dan heksadesimal (harus dimulai dengan0x
atau0X)
diterima. Ditafsirkan sebagai bilangan bulat 64-bit; overflow mengakibatkan pemotongan. (Parser menerima nilai dari -2 64 + 1 hingga 2 64 - 1, bit ke-65 terpotong; untuk detailnya lihat halaman manual strtoull .) -
range
. Formatnya adalah[int]-[int]
, misalnya10-20
. Nilai heksadesimal diterima dan harus dimulai dengan0x
atau0X
. Dua batas harus berupa bilangan bulat 64-bit yang tidak ditandatangani. -
tristate
. Nilai yang valid adalahy
,m
dann
.
-
-
compatibility-matrix.kernel.config.value.type
- Diperlukan. Jenis nilai item
CONFIG
, salah satu dari:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- Diperlukan. Berisi semua entri terkait kebijakan. Hanya digunakan oleh matriks kompatibilitas kerangka kerja.
-
compatibility-matrix.sepolicy.sepolicy-version
- Wajib, bisa diulang. Menjelaskan persyaratan pada versi sepolicy. Sesuai dengan
manifest.sepolicy.version
. Setiap instance elemen mendefinisikan berbagai versi sepolicy. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- Diperlukan. Mendeklarasikan versi
policydb
yang digunakan framework. -
compatibility-matrix.avb.vbmeta-version
- Pilihan; hanya digunakan oleh matriks kompatibilitas kerangka kerja. Mendeklarasikan versi AVB yang digunakan untuk menandatangani
system.img
. Tidak digunakan lagi di Android 10. -
compatibility-matrix.vendor-ndk
- Pilihan; hanya digunakan oleh matriks kompatibilitas perangkat. Mendeklarasikan persyaratan snapshot vendor VNDK. Jika tidak ada, tidak ada persyaratan VNDK yang dibuat pada citra sistem.
-
compatibility-matrix.vendor-ndk.version
- Diperlukan. Bilangan bulat positif yang menyatakan versi VNDK yang diperlukan oleh citra vendor.
-
compatibility-matrix.vendor-ndk.library
- Opsional, dapat diulang. Mendeklarasikan kumpulan pustaka VNDK yang diperlukan oleh gambar vendor. Semantik yang sama dengan
manifest.vendor-ndk.library
. -
compatibility-matrix.system-sdk.version
- Opsional, dapat mengulang; hanya digunakan oleh matriks kompatibilitas perangkat. Mendeklarasikan persyaratan oleh aplikasi vendor pada versi System SDK. Jika tidak ada, tidak ada persyaratan SDK Sistem yang dibuat pada citra sistem.