Uyumluluk Matrisleri

Bu bölüm, çerçeve ve cihaz uyumluluk matrisleri ve tarif uyumluluk matrisi şeması . Maç kuralları için bkz Eşleştirme Kuralları .

Çerçeve uyumluluk matrisi (FCM)

Çerçeve uyumluluk matrisi (FCM), çerçevenin üzerinde çalıştığı cihazdaki gereksinimlerini açıklar. Çerçeve uyumluluğu matris sistemi uyumluluk matris oluşur ürün uyumluluğu matris ve system_ext uyumluluk matris . 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.

  • Cihaz FCM modüllerin gereklerini yansıtmalıdır sistem bölümünde .
  • system_ext FCM, system_ext bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
  • Ürün FCM içinde modüllerle gereksinimlerini yansıtmalıdır Ürün bölümünün .

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 Ömrü .

Ü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, sistem ve ürün bölümlerindeki FCM'lerle system_ext FCM'yi çalışma zamanında birleştirir. Bkz ürün uyumluluk matrisi FCM dosyası system_ext bir örnek için.

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" etiketleri Android kaynak ağacındaki kaynak dosyadan eksik ve tarafından yazılabilir assemble_vintf yapı anda. 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 uyumluluğu matrisi.
  • "framework" : Çerçeve uyumluluk matrisi.
manifest.level
Çerçeve uyumluluk matrisi için gereklidir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümünü (FCM Sürümü) belirtir. (Yani, cihaza özgü bir çerçeve uyumluluk matris içinde beyan olmamalı 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 ile ayırt edilir <name> elemanı; 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'lere. Bu varsayılandır.
  • "aidl" : AIDL HAL'lere . Yalnızca uyumluluk matrisi meta sürümü 2.0'da geçerlidir.
  • "native" : Yerli HAL'lere.
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 ederse <hal> Giriş opsiyonel olarak işaretlenmiş, bu mevcutsa sahibi, bu HAL ile çalışabilir anlamına gelir, ancak mevcut olmasını gerektirmez.
compatibility-matrix.hal.name
Gerekli. Bu HAL'nin tam paket adı. Örnekler:
  • android.hardware.camera (HIDL veya AIDL HAL)
  • GLES (yerli HAL, sadece adını gerektirir)
compatibility-matrix.hal.version
Versiyon aralıklarının bir listesi (bkz HAL maç tanımlar uyumluluk matrisi (çerçeve veya aygıt) sahibi beklediği versiyonları gibi).

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

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 (eşdeğer VERSION - VERSION )
Belirtilmemiş değilse, hiç değeri varsayılan 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 arayüzde gerekli örnek adı kalıplarının listesi. Kullanım Genişletilmiş Normal İfade biçimi.
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.
Birden <kernel> aynı olan <version> "ve" ilişkiyi ima etmek bulunabilir. Her <kernel> is yalnızca etkindir gereksinimlerinin "fragman" <conditions> karşılanmaktadır.
compatibility-matrix.kernel.version
Gerekli. Çekirdek sürümü. Biçim olduğunu 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ı. İlk var olmaması gerekir <kernel> her bir sürümün. Koşullar listesini belirtir. Şartlar yerine getirildiği Yalnızca bu belirtilen gereksinimleri <kernel> parçası isimli sağladı.
compatibility-matrix.kernel.config
İsteğe bağlı, tekrar edebilir. Listeler CONFIG bu çekirdek sürümü için karşılanması gereken öğeler. Her CONFIG öğesi bir anahtar değer çifti olduğu; yapılandırma öğeleri anahtarla ayırt edilir.
compatibility-matrix.kernel.config.key
Gerekli. Anahtar adı CONFIG öğesi. Başlar CONFIG_ .
compatibility-matrix.kernel.config.value
Gerekli. Değer CONFIG öğesi. Biçim, türe bağlıdır:
  • string . Alıntılar çıkarılmıştır.
  • int . Ondalık ve onaltılık (başlamalıdır 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 64 2 değerleri kabul - 1, 65. biraz kesilmiş, ayrıntıları için, bakınız, strtoull kılavuz sayfasında .)
  • range . Format [int]-[int] , örneğin, 10-20 . Onaltılık değerler kabul edilir ve ile başlamalı 0x veya 0X . İ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. Değerinin yazın CONFIG öğesi, 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. Tekabül manifest.sepolicy.version . Bir öğenin her örneği, bir dizi sepolicy sürümünü tanımlar.
compatibility-matrix.sepolicy.kernel-sepolicy-version
Gerekli. Diyor policydb çerçevesi ile çalışır versiyonu.
compatibility-matrix.avb.vbmeta-version
İsteğe bağlı; yalnızca çerçeve uyumluluk matrisi tarafından kullanılır. Diyor AVB sürümünü imzalamak için kullanılan system.img . 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. Eksikse, 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. Aynı semantik manifest.vendor-ndk.library .
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.