Bu bölümde, çerçeve ve aygıt uyumluluk matrisleri ile uyumluluk matrisi şeması açıklanmaktadır. Eşleşme kuralları için bkz. Eşleşme Kuralları .
Çerçeve uyumluluk matrisi (FCM)
Çerçeve uyumluluk matrisi (FCM), üzerinde çalıştığı cihazdaki çerçevenin gereksinimlerini açıklar. Çerçeve uyumluluk matrisi, sistem uyumluluk matrisi, ürün uyumluluk matrisi ve system_ext uyumluluk matrisinden oluşur . FCM'nin gereksinimleri, cihaz bildirimi tarafından karşılanmalıdır (gereksinimler derleme zamanında, çalışma zamanında ve VTS'de uygulanır).
system_ext FCM ve ürün FCM'si, aygıta özgü FCM'nin tamamlayıcılarıdır (sistem bölümünde kuruludur).
- Aygıt FCM'si, sistem bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- system_ext FCM, system_ext bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- Ürün FCM'si, ürün bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
Tüm FCM'ler, bir OEM'nin sistem, ürün ve system_ext bölümlerindeki çerçevede yaptığı değişikliklerle uyumlu olmalıdır. Örneğin, ürün bölümüne yüklenen bir uygulama, bir HAL arabiriminin satıcı uzantısını kullanıyorsa, HAL arabirim gereksinimi ürün FCM'sinde bildirilmelidir.
Örnek sistem uyumluluğu matris dosyası:
<?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>
Daha fazla ayrıntı için bkz. FCM Yaşam Döngüsü .
Ürün uyumluluk matrisi
Ürün FCM'si, ürün bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, ürün FCM'sini çalışma zamanında sistem ve system_ext bölümlerindeki FCM'lerle birleştirir.
Örnek ürün FCM dosyası:
<?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>
System_ext uyumluluk matrisi
system_ext FCM, system_ext bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, system_ext FCM'yi çalışma zamanında sistem ve ürün bölümlerindeki FCM'lerle birleştirir. Örnek bir system_ext FCM dosyası için ürün uyumluluk matrisine bakın.
Cihaz uyumluluk matrisi (DCM)
Cihaz uyumluluk matrisi, cihazın çerçeveden beklediği bir dizi gerekliliği açıklar (başlangıçta ve OTA zamanında uygulanan gereklilikler).
Örnek DCM dosyası:
<?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>
Uyumluluk matrisi şeması
Bu bölümde, bu XML etiketlerinin anlamı açıklanmaktadır. Bazı "gerekli" etiketler, Android kaynak ağacındaki kaynak dosyada eksik olabilir ve derleme zamanında assemble_vintf
tarafından yazılabilir. Cihazdaki ilgili dosyalarda "gerekli" etiketler bulunmalıdır.
-
?xml
- İsteğe bağlı. Yalnızca XML ayrıştırıcısına bilgi sağlar.
-
compatibility-matrix.version
- Gerekli. Bu uyumluluk matrisinin meta versiyonu. Uyumluluk matrisinde beklenen öğeleri açıklar. XML sürümüyle ilgisiz.
-
compatibility-matrix.type
- Gerekli. Bu uyumluluk matrisinin türü:
-
"device"
: Cihaz uyumluluk matrisi. -
"framework"
: Çerçeve uyumluluk matrisi.
-
-
manifest.level
- Çerçeve uyumluluk matrisi için gereklidir. Android 12 ve sonraki sürümlerde, ürün ve system_ext bölümlerinde çerçeve uyumluluğu matris dosyalarına izin verilir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümünü (FCM Sürümü) belirtir. Bunu cihaza özgü çerçeve uyumluluk matrisinde beyan etmeyin (örn.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- İsteğe bağlı ve tekrar edebilir. Uyumluluk matrisinin (çerçeve veya aygıt) sahibi tarafından bulunması gereken tek bir HAL'yi (HIDL veya yerel) listeler. HAL girişleri bir
<name>
öğesi ile ayırt edilir; aynı ada sahip birkaç HAL girişi olabilir ("ve" koşulunu ima eder). -
compatibility-matrix.hal.format
- İsteğe bağlı. Değer şunlardan biri olabilir:
-
"hidl"
: HIDL HAL'ler. Bu varsayılandır. -
"aidl"
: AIDL HAL'leri . Yalnızca uyumluluk matrisi meta sürümü 2.0'da geçerlidir. -
"native"
: yerel HAL'ler.
-
-
compatibility-matrix.hal.optional
- Öznitelik isteğe bağlıdır ve varsayılan olarak false olur. Bu HAL'nin uyumluluk matrisinin (çerçeve veya aygıt) sahibi için isteğe bağlı olup olmadığını belirtir. Bir
<hal>
girişi isteğe bağlı olarak işaretlenirse, bu, sahibinin varsa bu HAL ile çalışabileceği, ancak mevcut olmasını gerektirmediği anlamına gelir. -
compatibility-matrix.hal.name
- Gerekli. Bu HAL'ın tam paket adı. Örnekler:
-
android.hardware.camera
(HIDL veya AIDL HAL) -
GLES
(yerel HAL, yalnızca ad gerektirir)
-
-
compatibility-matrix.hal.version
- Uyumluluk matrisinin (çerçeve veya aygıt) sahibinin hangi sürümleri beklediğini tanımlayan bir sürüm aralıkları listesi (bkz. HAL eşleşmeleri ).
HIDL ve yerel HAL'ler için, gerekli, kopyalar olmadan tekrar edebilir. Biçim aşağıdakilerden biridir:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(MAJOR . MINOR - MINOR
eşdeğerdir)
AIDL HAL'leri için, Android 11 ve önceki sürümleri çalıştıran cihazlarda bulunmamalıdır. Daha sonraki sürümleri çalıştıran cihazlarda isteğe bağlıdır. Belirtilmişse, format aşağıdakilerden biridir:-
VERSION_MIN - VERSION_MAX
-
VERSION
(VERSION - VERSION
eşdeğeri)
1
olur. -
-
compatibility-matrix.hal.interface
- İsteğe bağlı, tekrar edebilir. Bu HAL'ın gerekli arabirimlerinin bir listesi.
-
compatibility-matrix.hal.interface.name
- Gerekli. Arayüzün adı.
-
compatibility-matrix.hal.interface.instance
- İsteğe bağlı, tekrar edebilir. Bu arayüzün gerekli örneklerinin bir listesi.
-
compatibility-matrix.hal.interface.regex-instance
- İsteğe bağlı, tekrar edebilir. Bu arabirimdeki gerekli örnek adı kalıplarının bir listesi. Genişletilmiş Normal İfade biçimini kullanın.
-
compatibility-matrix.kernel
- İsteğe bağlı, tekrar edebilir. Çerçevenin her çekirdek sürümünde gerektirdiği çekirdek yapılandırmalarının bir listesini belirtin.
"ve" ilişkisini ima etmek için aynı<version>
ile birden çok<kernel>
bulunabilir. Her<kernel>
, yalnızca<conditions>
karşılandığında etkinleştirilen gereksinimlerin bir "parçasıdır". -
compatibility-matrix.kernel.version
- Gerekli. Çekirdek sürümü. Biçim
VERSION . MAJOR_REVISION . MINOR_REVISION
. Sürüm ve ana revizyon tam olarak eşleşmelidir. Küçük revizyon, çerçevenin beklediği çekirdeğin minimum LTS sürümünü tanımlar. -
compatibility-matrix.kernel.condition
- İsteğe bağlı. Her sürümün ilk
<kernel>
için mevcut olmamalıdır. Bir koşul listesi belirtir. Koşullar karşılandığında, bu<kernel>
parçasında belirtilen gereksinimler etkinleştirilir. -
compatibility-matrix.kernel.config
- İsteğe bağlı, tekrar edebilir. Bu çekirdek sürümü için eşleşmesi gereken
CONFIG
öğelerini listeler. HerCONFIG
öğesi bir anahtar/değer çiftidir; yapılandırma öğeleri anahtarla ayırt edilir. -
compatibility-matrix.kernel.config.key
- Gerekli.
CONFIG
öğesinin anahtar adı.CONFIG_
ile başlar. -
compatibility-matrix.kernel.config.value
- Gerekli.
CONFIG
öğesinin değeri. Biçim, türe göre değişir:-
string
Alıntılar atlanmıştır. -
int
. Ondalık ve onaltılık (0x
veya0X)
değerler kabul edilir. 64 bitlik bir tamsayı olarak yorumlanır; taşmalar kesintiye neden olur. (Ayrıştırıcı -2 64 + 1 ile 2 64 - 1 arasındaki değerleri kabul eder, 65. bit kesilir; ayrıntılar için strtoull kılavuz sayfasına bakın .) -
range
Biçim[int]-[int]
, örneğin10-20
. Onaltılık değerler kabul edilir ve0x
veya0X
ile başlamalıdır. İki sınır, işaretsiz 64 bitlik bir tamsayı olmalıdır. -
tristate
Geçerli değerlery
,m
ven
.
-
-
compatibility-matrix.kernel.config.value.type
- Gerekli.
CONFIG
öğesinin değerinin türü, aşağıdakilerden biri:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- Gerekli. Sepolicy ile ilgili tüm girdileri içerir. Yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
-
compatibility-matrix.sepolicy.sepolicy-version
- Gerekli, tekrarlayabilir. Sepolicy sürümündeki gereksinimi açıklar.
manifest.sepolicy.version
karşılık gelir. Bir öğenin her örneği, bir dizi sepolicy sürümünü tanımlar. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- Gerekli. Çerçevenin birlikte çalıştığı
policydb
sürümünü bildirir. -
compatibility-matrix.avb.vbmeta-version
- İsteğe bağlı; yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
system.img
imzalamak için kullanılan AVB sürümünü bildirir. Android 10'da kullanımdan kaldırıldı. -
compatibility-matrix.vendor-ndk
- İsteğe bağlı; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. VNDK satıcı anlık görüntüsünün gereksinimini bildirir. Eksik ise, sistem görüntüsü üzerinde herhangi bir VNDK gereksinimi yapılmaz.
-
compatibility-matrix.vendor-ndk.version
- Gerekli. Satıcı görüntüsünün gerektirdiği bir VNDK sürümünü bildiren pozitif bir tamsayı.
-
compatibility-matrix.vendor-ndk.library
- İsteğe bağlı, tekrar edebilir. Satıcı görüntüsünün gerektirdiği bir dizi VNDK kitaplığını bildirir.
manifest.vendor-ndk.library
ile aynı semantik. -
compatibility-matrix.system-sdk.version
- İsteğe bağlı, tekrar edebilir; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. Sistem SDK sürümlerinde satıcı uygulamalarına göre gereksinimi bildirir. Eksikse, sistem görüntüsünde herhangi bir Sistem SDK gereksinimi yapılmaz.
Bu bölümde, çerçeve ve aygıt uyumluluk matrisleri ile uyumluluk matrisi şeması açıklanmaktadır. Eşleşme kuralları için bkz. Eşleşme Kuralları .
Çerçeve uyumluluk matrisi (FCM)
Çerçeve uyumluluk matrisi (FCM), üzerinde çalıştığı cihazdaki çerçevenin gereksinimlerini açıklar. Çerçeve uyumluluk matrisi, sistem uyumluluk matrisi, ürün uyumluluk matrisi ve system_ext uyumluluk matrisinden oluşur . FCM'nin gereksinimleri, cihaz bildirimi tarafından karşılanmalıdır (gereksinimler derleme zamanında, çalışma zamanında ve VTS'de uygulanır).
system_ext FCM ve ürün FCM'si, aygıta özgü FCM'nin tamamlayıcılarıdır (sistem bölümünde kuruludur).
- Aygıt FCM'si, sistem bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- system_ext FCM, system_ext bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- Ürün FCM'si, ürün bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
Tüm FCM'ler, bir OEM'nin sistem, ürün ve system_ext bölümlerindeki çerçevede yaptığı değişikliklerle uyumlu olmalıdır. Örneğin, ürün bölümüne yüklenen bir uygulama, bir HAL arabiriminin satıcı uzantısını kullanıyorsa, HAL arabirim gereksinimi ürün FCM'sinde bildirilmelidir.
Örnek sistem uyumluluğu matris dosyası:
<?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>
Daha fazla ayrıntı için bkz. FCM Yaşam Döngüsü .
Ürün uyumluluk matrisi
Ürün FCM'si, ürün bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, ürün FCM'sini çalışma zamanında sistem ve system_ext bölümlerindeki FCM'lerle birleştirir.
Örnek ürün FCM dosyası:
<?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>
System_ext uyumluluk matrisi
system_ext FCM, system_ext bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, system_ext FCM'yi çalışma zamanında sistem ve ürün bölümlerindeki FCM'lerle birleştirir. Örnek bir system_ext FCM dosyası için ürün uyumluluk matrisine bakın.
Cihaz uyumluluk matrisi (DCM)
Cihaz uyumluluk matrisi, cihazın çerçeveden beklediği bir dizi gerekliliği açıklar (başlangıçta ve OTA zamanında uygulanan gereklilikler).
Örnek DCM dosyası:
<?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>
Uyumluluk matrisi şeması
Bu bölümde, bu XML etiketlerinin anlamı açıklanmaktadır. Bazı "gerekli" etiketler, Android kaynak ağacındaki kaynak dosyada eksik olabilir ve derleme zamanında assemble_vintf
tarafından yazılabilir. Cihazdaki ilgili dosyalarda "gerekli" etiketler bulunmalıdır.
-
?xml
- İsteğe bağlı. Yalnızca XML ayrıştırıcısına bilgi sağlar.
-
compatibility-matrix.version
- Gerekli. Bu uyumluluk matrisinin meta versiyonu. Uyumluluk matrisinde beklenen öğeleri açıklar. XML sürümüyle ilgisiz.
-
compatibility-matrix.type
- Gerekli. Bu uyumluluk matrisinin türü:
-
"device"
: Cihaz uyumluluk matrisi. -
"framework"
: Çerçeve uyumluluk matrisi.
-
-
manifest.level
- Çerçeve uyumluluk matrisi için gereklidir. Android 12 ve sonraki sürümlerde, ürün ve system_ext bölümlerinde çerçeve uyumluluğu matris dosyalarına izin verilir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümünü (FCM Sürümü) belirtir. Bunu cihaza özgü çerçeve uyumluluk matrisinde beyan etmeyin (örn.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- İsteğe bağlı ve tekrar edebilir. Uyumluluk matrisinin (çerçeve veya aygıt) sahibi tarafından bulunması gereken tek bir HAL'yi (HIDL veya yerel) listeler. HAL girişleri bir
<name>
öğesi ile ayırt edilir; aynı ada sahip birkaç HAL girişi olabilir ("ve" koşulunu ima eder). -
compatibility-matrix.hal.format
- İsteğe bağlı. Değer şunlardan biri olabilir:
-
"hidl"
: HIDL HAL'ler. Bu varsayılandır. -
"aidl"
: AIDL HAL'leri . Yalnızca uyumluluk matrisi meta sürümü 2.0'da geçerlidir. -
"native"
: yerel HAL'ler.
-
-
compatibility-matrix.hal.optional
- Öznitelik isteğe bağlıdır ve varsayılan olarak false olur. Bu HAL'nin uyumluluk matrisinin (çerçeve veya aygıt) sahibi için isteğe bağlı olup olmadığını belirtir. Bir
<hal>
girişi isteğe bağlı olarak işaretlenirse, bu, sahibinin varsa bu HAL ile çalışabileceği, ancak mevcut olmasını gerektirmediği anlamına gelir. -
compatibility-matrix.hal.name
- Gerekli. Bu HAL'ın tam paket adı. Örnekler:
-
android.hardware.camera
(HIDL veya AIDL HAL) -
GLES
(yerel HAL, yalnızca ad gerektirir)
-
-
compatibility-matrix.hal.version
- Uyumluluk matrisinin (çerçeve veya aygıt) sahibinin hangi sürümleri beklediğini tanımlayan bir sürüm aralıkları listesi (bkz. HAL eşleşmeleri ).
HIDL ve yerel HAL'ler için, gerekli, kopyalar olmadan tekrar edebilir. Biçim aşağıdakilerden biridir:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(MAJOR . MINOR - MINOR
eşdeğerdir)
AIDL HAL'leri için, Android 11 ve önceki sürümleri çalıştıran cihazlarda bulunmamalıdır. Daha sonraki sürümleri çalıştıran cihazlarda isteğe bağlıdır. Belirtilmişse, format aşağıdakilerden biridir:-
VERSION_MIN - VERSION_MAX
-
VERSION
(VERSION - VERSION
eşdeğeri)
1
olur. -
-
compatibility-matrix.hal.interface
- İsteğe bağlı, tekrar edebilir. Bu HAL'ın gerekli arabirimlerinin bir listesi.
-
compatibility-matrix.hal.interface.name
- Gerekli. Arayüzün adı.
-
compatibility-matrix.hal.interface.instance
- İsteğe bağlı, tekrar edebilir. Bu arayüzün gerekli örneklerinin bir listesi.
-
compatibility-matrix.hal.interface.regex-instance
- İsteğe bağlı, tekrar edebilir. Bu arabirimdeki gerekli örnek adı kalıplarının bir listesi. Genişletilmiş Normal İfade biçimini kullanın.
-
compatibility-matrix.kernel
- İsteğe bağlı, tekrar edebilir. Çerçevenin her çekirdek sürümünde gerektirdiği çekirdek yapılandırmalarının bir listesini belirtin.
"ve" ilişkisini ima etmek için aynı<version>
ile birden çok<kernel>
bulunabilir. Her<kernel>
, yalnızca<conditions>
karşılandığında etkinleştirilen gereksinimlerin bir "parçasıdır". -
compatibility-matrix.kernel.version
- Gerekli. Çekirdek sürümü. Biçim
VERSION . MAJOR_REVISION . MINOR_REVISION
. Sürüm ve ana revizyon tam olarak eşleşmelidir. Küçük revizyon, çerçevenin beklediği çekirdeğin minimum LTS sürümünü tanımlar. -
compatibility-matrix.kernel.condition
- İsteğe bağlı. Her sürümün ilk
<kernel>
için mevcut olmamalıdır. Bir koşul listesi belirtir. Koşullar karşılandığında, bu<kernel>
parçasında belirtilen gereksinimler etkinleştirilir. -
compatibility-matrix.kernel.config
- İsteğe bağlı, tekrar edebilir. Bu çekirdek sürümü için eşleşmesi gereken
CONFIG
öğelerini listeler. HerCONFIG
öğesi bir anahtar/değer çiftidir; yapılandırma öğeleri anahtarla ayırt edilir. -
compatibility-matrix.kernel.config.key
- Gerekli.
CONFIG
öğesinin anahtar adı.CONFIG_
ile başlar. -
compatibility-matrix.kernel.config.value
- Gerekli.
CONFIG
öğesinin değeri. Biçim, türe göre değişir:-
string
Alıntılar atlanmıştır. -
int
. Ondalık ve onaltılık (0x
veya0X)
değerler kabul edilir. 64 bitlik bir tamsayı olarak yorumlanır; taşmalar kesintiye neden olur. (Ayrıştırıcı -2 64 + 1 ile 2 64 - 1 arasındaki değerleri kabul eder, 65. bit kesilir; ayrıntılar için strtoull kılavuz sayfasına bakın .) -
range
Biçim[int]-[int]
, örneğin10-20
. Onaltılık değerler kabul edilir ve0x
veya0X
ile başlamalıdır. İki sınır, işaretsiz 64 bitlik bir tamsayı olmalıdır. -
tristate
Geçerli değerlery
,m
ven
.
-
-
compatibility-matrix.kernel.config.value.type
- Gerekli.
CONFIG
öğesinin değerinin türü, aşağıdakilerden biri:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- Gerekli. Sepolicy ile ilgili tüm girdileri içerir. Yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
-
compatibility-matrix.sepolicy.sepolicy-version
- Gerekli, tekrarlayabilir. Sepolicy sürümündeki gereksinimi açıklar.
manifest.sepolicy.version
karşılık gelir. Bir öğenin her örneği, bir dizi sepolicy sürümünü tanımlar. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- Gerekli. Çerçevenin birlikte çalıştığı
policydb
sürümünü bildirir. -
compatibility-matrix.avb.vbmeta-version
- İsteğe bağlı; yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
system.img
imzalamak için kullanılan AVB sürümünü bildirir. Android 10'da kullanımdan kaldırıldı. -
compatibility-matrix.vendor-ndk
- İsteğe bağlı; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. VNDK satıcı anlık görüntüsünün gereksinimini bildirir. Eksik ise, sistem görüntüsü üzerinde herhangi bir VNDK gereksinimi yapılmaz.
-
compatibility-matrix.vendor-ndk.version
- Gerekli. Satıcı görüntüsünün gerektirdiği bir VNDK sürümünü bildiren pozitif bir tamsayı.
-
compatibility-matrix.vendor-ndk.library
- İsteğe bağlı, tekrar edebilir. Satıcı görüntüsünün gerektirdiği bir dizi VNDK kitaplığını bildirir.
manifest.vendor-ndk.library
ile aynı semantik. -
compatibility-matrix.system-sdk.version
- İsteğe bağlı, tekrar edebilir; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. Sistem SDK sürümlerinde satıcı uygulamalarına göre gereksinimi bildirir. Eksikse, sistem görüntüsünde herhangi bir Sistem SDK gereksinimi yapılmaz.
Bu bölümde, çerçeve ve aygıt uyumluluk matrisleri ile uyumluluk matrisi şeması açıklanmaktadır. Eşleşme kuralları için bkz. Eşleşme Kuralları .
Çerçeve uyumluluk matrisi (FCM)
Çerçeve uyumluluk matrisi (FCM), üzerinde çalıştığı cihazdaki çerçevenin gereksinimlerini açıklar. Çerçeve uyumluluk matrisi, sistem uyumluluk matrisi, ürün uyumluluk matrisi ve system_ext uyumluluk matrisinden oluşur . FCM'nin gereksinimleri, cihaz bildirimi tarafından karşılanmalıdır (gereksinimler derleme zamanında, çalışma zamanında ve VTS'de uygulanır).
system_ext FCM ve ürün FCM'si, aygıta özgü FCM'nin tamamlayıcılarıdır (sistem bölümünde kuruludur).
- Aygıt FCM'si, sistem bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- system_ext FCM, system_ext bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
- Ürün FCM'si, ürün bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
Tüm FCM'ler, bir OEM'nin sistem, ürün ve system_ext bölümlerindeki çerçevede yaptığı değişikliklerle uyumlu olmalıdır. Örneğin, ürün bölümüne yüklenen bir uygulama, bir HAL arabiriminin satıcı uzantısını kullanıyorsa, HAL arabirim gereksinimi ürün FCM'sinde bildirilmelidir.
Örnek sistem uyumluluğu matris dosyası:
<?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>
Daha fazla ayrıntı için bkz. FCM Yaşam Döngüsü .
Ürün uyumluluk matrisi
Ürün FCM'si, ürün bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, ürün FCM'sini çalışma zamanında sistem ve system_ext bölümlerindeki FCM'lerle birleştirir.
Örnek ürün FCM dosyası:
<?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>
System_ext uyumluluk matrisi
system_ext FCM, system_ext bölümündeki bir çerçeve uyumluluğu matris dosyasıdır. VINTF nesnesi, system_ext FCM'yi çalışma zamanında sistem ve ürün bölümlerindeki FCM'lerle birleştirir. Örnek bir system_ext FCM dosyası için ürün uyumluluk matrisine bakın.
Cihaz uyumluluk matrisi (DCM)
Cihaz uyumluluk matrisi, cihazın çerçeveden beklediği bir dizi gerekliliği açıklar (başlangıçta ve OTA zamanında uygulanan gereklilikler).
Örnek DCM dosyası:
<?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>
Uyumluluk matrisi şeması
Bu bölümde, bu XML etiketlerinin anlamı açıklanmaktadır. Bazı "gerekli" etiketler, Android kaynak ağacındaki kaynak dosyada eksik olabilir ve derleme zamanında assemble_vintf
tarafından yazılabilir. Cihazdaki ilgili dosyalarda "gerekli" etiketler bulunmalıdır.
-
?xml
- İsteğe bağlı. Yalnızca XML ayrıştırıcısına bilgi sağlar.
-
compatibility-matrix.version
- Gerekli. Bu uyumluluk matrisinin meta versiyonu. Uyumluluk matrisinde beklenen öğeleri açıklar. XML sürümüyle ilgisiz.
-
compatibility-matrix.type
- Gerekli. Bu uyumluluk matrisinin türü:
-
"device"
: Cihaz uyumluluk matrisi. -
"framework"
: Çerçeve uyumluluk matrisi.
-
-
manifest.level
- Çerçeve uyumluluk matrisi için gereklidir. Android 12 ve sonraki sürümlerde, ürün ve system_ext bölümlerinde çerçeve uyumluluğu matris dosyalarına izin verilir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümünü (FCM Sürümü) belirtir. Bunu cihaza özgü çerçeve uyumluluk matrisinde beyan etmeyin (örn.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). -
compatibility-matrix.hal
- İsteğe bağlı ve tekrar edebilir. Uyumluluk matrisinin (çerçeve veya aygıt) sahibi tarafından bulunması gereken tek bir HAL'yi (HIDL veya yerel) listeler. HAL girişleri bir
<name>
öğesi ile ayırt edilir; aynı ada sahip birkaç HAL girişi olabilir ("ve" koşulunu ima eder). -
compatibility-matrix.hal.format
- İsteğe bağlı. Değer şunlardan biri olabilir:
-
"hidl"
: HIDL HAL'ler. Bu varsayılandır. -
"aidl"
: AIDL HAL'leri . Yalnızca uyumluluk matrisi meta sürümü 2.0'da geçerlidir. -
"native"
: yerel HAL'ler.
-
-
compatibility-matrix.hal.optional
- Öznitelik isteğe bağlıdır ve varsayılan olarak false olur. Bu HAL'nin uyumluluk matrisinin (çerçeve veya aygıt) sahibi için isteğe bağlı olup olmadığını belirtir. Bir
<hal>
girişi isteğe bağlı olarak işaretlenirse, bu, sahibinin varsa bu HAL ile çalışabileceği, ancak mevcut olmasını gerektirmediği anlamına gelir. -
compatibility-matrix.hal.name
- Gerekli. Bu HAL'ın tam paket adı. Örnekler:
-
android.hardware.camera
(HIDL veya AIDL HAL) -
GLES
(yerel HAL, yalnızca ad gerektirir)
-
-
compatibility-matrix.hal.version
- Uyumluluk matrisinin (çerçeve veya aygıt) sahibinin hangi sürümleri beklediğini tanımlayan bir sürüm aralıkları listesi (bkz. HAL eşleşmeleri ).
HIDL ve yerel HAL'ler için, gerekli, kopyalar olmadan tekrar edebilir. Biçim aşağıdakilerden biridir:-
MAJOR . MINOR_MIN - MINOR_MAX
-
MAJOR . MINOR
(MAJOR . MINOR - MINOR
eşdeğerdir)
AIDL HAL'leri için, Android 11 ve önceki sürümleri çalıştıran cihazlarda bulunmamalıdır. Daha sonraki sürümleri çalıştıran cihazlarda isteğe bağlıdır. Belirtilmişse, format aşağıdakilerden biridir:-
VERSION_MIN - VERSION_MAX
-
VERSION
(VERSION - VERSION
eşdeğeri)
1
olur. -
-
compatibility-matrix.hal.interface
- İsteğe bağlı, tekrar edebilir. Bu HAL'ın gerekli arabirimlerinin bir listesi.
-
compatibility-matrix.hal.interface.name
- Gerekli. Arayüzün adı.
-
compatibility-matrix.hal.interface.instance
- İsteğe bağlı, tekrar edebilir. Bu arayüzün gerekli örneklerinin bir listesi.
-
compatibility-matrix.hal.interface.regex-instance
- İsteğe bağlı, tekrar edebilir. Bu arabirimdeki gerekli örnek adı kalıplarının bir listesi. Genişletilmiş Normal İfade biçimini kullanın.
-
compatibility-matrix.kernel
- İsteğe bağlı, tekrar edebilir. Çerçevenin her çekirdek sürümünde gerektirdiği çekirdek yapılandırmalarının bir listesini belirtin.
"ve" ilişkisini ima etmek için aynı<version>
ile birden çok<kernel>
bulunabilir. Her<kernel>
, yalnızca<conditions>
karşılandığında etkinleştirilen gereksinimlerin bir "parçasıdır". -
compatibility-matrix.kernel.version
- Gerekli. Çekirdek sürümü. Biçim
VERSION . MAJOR_REVISION . MINOR_REVISION
. Sürüm ve ana revizyon tam olarak eşleşmelidir. Küçük revizyon, çerçevenin beklediği çekirdeğin minimum LTS sürümünü tanımlar. -
compatibility-matrix.kernel.condition
- İsteğe bağlı. Her sürümün ilk
<kernel>
için mevcut olmamalıdır. Bir koşul listesi belirtir. Koşullar karşılandığında, bu<kernel>
parçasında belirtilen gereksinimler etkinleştirilir. -
compatibility-matrix.kernel.config
- İsteğe bağlı, tekrar edebilir. Bu çekirdek sürümü için eşleşmesi gereken
CONFIG
öğelerini listeler. HerCONFIG
öğesi bir anahtar/değer çiftidir; yapılandırma öğeleri anahtarla ayırt edilir. -
compatibility-matrix.kernel.config.key
- Gerekli.
CONFIG
öğesinin anahtar adı.CONFIG_
ile başlar. -
compatibility-matrix.kernel.config.value
- Gerekli.
CONFIG
öğesinin değeri. Biçim, türe göre değişir:-
string
Alıntılar atlanmıştır. -
int
. Ondalık ve onaltılık (0x
veya0X)
değerler kabul edilir. 64 bitlik bir tamsayı olarak yorumlanır; taşmalar kesintiye neden olur. (Ayrıştırıcı -2 64 + 1 ile 2 64 - 1 arasındaki değerleri kabul eder, 65. bit kesilir; ayrıntılar için strtoull kılavuz sayfasına bakın .) -
range
Biçim[int]-[int]
, örneğin10-20
. Onaltılık değerler kabul edilir ve0x
veya0X
ile başlamalıdır. İki sınır, işaretsiz 64 bitlik bir tamsayı olmalıdır. -
tristate
Geçerli değerlery
,m
ven
.
-
-
compatibility-matrix.kernel.config.value.type
- Gerekli.
CONFIG
öğesinin değerinin türü, aşağıdakilerden biri:-
string
-
int
-
range
-
tristate
-
-
compatibility-matrix.sepolicy
- Gerekli. Sepolicy ile ilgili tüm girdileri içerir. Yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
-
compatibility-matrix.sepolicy.sepolicy-version
- Gerekli, tekrarlayabilir. Sepolicy sürümündeki gereksinimi açıklar.
manifest.sepolicy.version
karşılık gelir. Bir öğenin her örneği, bir dizi sepolicy sürümünü tanımlar. -
compatibility-matrix.sepolicy.kernel-sepolicy-version
- Gerekli. Çerçevenin birlikte çalıştığı
policydb
sürümünü bildirir. -
compatibility-matrix.avb.vbmeta-version
- İsteğe bağlı; yalnızca çerçeve uyumluluk matrisi tarafından kullanılır.
system.img
imzalamak için kullanılan AVB sürümünü bildirir. Android 10'da kullanımdan kaldırıldı. -
compatibility-matrix.vendor-ndk
- İsteğe bağlı; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. VNDK satıcı anlık görüntüsünün gereksinimini bildirir. Eksik ise, sistem görüntüsü üzerinde herhangi bir VNDK gereksinimi yapılmaz.
-
compatibility-matrix.vendor-ndk.version
- Gerekli. Satıcı görüntüsünün gerektirdiği bir VNDK sürümünü bildiren pozitif bir tamsayı.
-
compatibility-matrix.vendor-ndk.library
- İsteğe bağlı, tekrar edebilir. Satıcı görüntüsünün gerektirdiği bir dizi VNDK kitaplığını bildirir.
manifest.vendor-ndk.library
ile aynı semantik. -
compatibility-matrix.system-sdk.version
- İsteğe bağlı, tekrar edebilir; yalnızca cihaz uyumluluk matrisi tarafından kullanılır. Sistem SDK sürümlerinde satıcı uygulamalarına göre gereksinimi bildirir. Eksikse, sistem görüntüsünde Sistem SDK gereksinimi yapılmaz.