Uyumluluk Matrisleri

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu bölüm, çerçeve ve cihaz uyumluluk matrislerini ve uyumluluk matrisi şemasını açıklar. Eşleşme kuralları için Eşleşme Kurallarına bakın.

Çerçeve uyumluluk matrisi (FCM)

Çerçeve uyumluluk matrisi (FCM), çerçevenin üzerinde çalıştığı cihazdaki gereksinimlerini açıklar. Çerçeve uyumluluk matrisi, sistem uyumluluk matrisi, ürün uyumluluk matrisi ve system_ext uyumluluk matrisinden oluşur . FCM gereksinimleri, cihaz bildirimi tarafından karşılanmalıdır (derleme zamanında, çalışma zamanında ve VTS'de zorunlu kılınan gereksinimler).

system_ext FCM ve ürün FCM, cihaza özel FCM'nin (sistem bölümünde kurulu) tamamlayıcılarıdır.

  • 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üllere göre gereksinimleri yansıtmalıdır.

Tüm FCM'ler, bir OEM'in sistem, ürün ve system_ext bölümlerindeki çerçeve üzerinde 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 arabirimi 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 uyumluluk matrisi dosyasıdır. VINTF nesnesi, ürün FCM'sini sistemdeki FCM'lerle ve çalışma zamanında system_ext bölümlerinde 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 uyumluluk matrisi dosyasıdır. VINTF nesnesi, çalışma zamanında sistem ve ürün bölümlerindeki FCM'lerle system_ext FCM'yi 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 gereksinimi açıklar (başlatma ve OTA zamanında zorunlu kılınan gereksinimler).

Ö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üm, bu XML etiketlerinin anlamını açıklar. Bazı "gerekli" etiketler, Android kaynak ağacındaki kaynak dosyada eksik olabilir ve derleme sırası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 unsurları 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ümlerindeki çerçeve uyumluluğu matris dosyalarında izin verilir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümünü (FCM Sürümü) belirtir. Bunu cihaza özel çerçeve uyumluluk matrisinde beyan etmeyin (yani 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'ı (HIDL veya yerel) listeler. HAL girişleri bir <name> öğesiyle ayırt edilir; aynı ada sahip birkaç HAL girişi olabilir ("ve" koşulu anlamına gelir).
compatibility-matrix.hal.format
İsteğe bağlı. Değer şunlardan biri olabilir:
  • "hidl" : HIDL HAL'leri. 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 şeklindedir. Bu HAL'ın 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, sahibinin bu HAL ile, varsa çalışabilir, ancak mevcut olmasını gerektirmediği anlamına gelir.
compatibility-matrix.hal.name
Gerekli. Bu HAL'nin 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 sürüm aralıklarının listesi ( HAL eşleşmelerine bakın).

HIDL ve yerel HAL'ler için, gerekli, yineleme olmadan tekrarlanabilir. Biçim aşağıdakilerden biridir:
  • MAJOR . MINOR_MIN - MINOR_MAX
  • MAJOR . MINOR ( MAJOR . MINOR - MINOR eşdeğeri)

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, biçim aşağıdakilerden biridir:
  • VERSION_MIN - VERSION_MAX
  • VERSION ( VERSION - VERSION eşdeğeri)
Belirtilmemişse, değer varsayılan olarak 1 .
compatibility-matrix.hal.interface
İsteğe bağlı, tekrar edebilir. Bu HAL'nin gerekli arabirimlerinin 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 listesi.
compatibility-matrix.hal.interface.regex-instance
İsteğe bağlı, tekrar edebilir. Bu arabirimdeki gerekli örnek adı kalıplarının listesi. Genişletilmiş Normal İfade biçimini kullanın.
compatibility-matrix.kernel
İsteğe bağlı, tekrar edebilir. Her çekirdek sürümünde çerçevenin gerektirdiği çekirdek yapılandırmalarının bir listesini belirtin.
"ve" ilişkisini ima etmek için aynı <version> ile birden çok <kernel> mevcut olabilir. 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. Koşullar listesini belirtir. Yalnızca 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. Her CONFIG öğ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 bağlıdır:
  • string . Alıntılar çıkarılmıştır.
  • int . Ondalık ve onaltılık ( 0x veya 0X) değerleri kabul edilir. 64 bit tam sayı 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ğin 10-20 . Onaltılık değerler kabul edilir ve 0x veya 0X ile başlamalıdır. İki sınır, imzasız bir 64 bit tam sayı olmalıdır.
  • tristate . Geçerli değerler y , m ve n .
compatibility-matrix.kernel.config.value.type
Gerekli. CONFIG öğesinin değerinin türü, şunlardan 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, tekrar edilebilir. 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 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 tam sayı.
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ığı 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ü üzerinde herhangi bir Sistem SDK gereksinimi yapılmaz.