Uyumluluk matrisleri

Bu bölümde, çerçeve ve cihaz uyumluluğu matrisleri ve uyumluluk matrisi şeması. Örneğin, eşleşme kurallarını görmek için Eşleşme Kurallar.

Çerçeve uyumluluk matrisi (FCM)

Çerçeve uyumluluk matrisi (FCM), çalışan bir çerçevedir. Çerçeve uyumluluk matrisi, ürün uyumluluk matrisi, ve system_ext uyumluluk matrisi gibidir. FCM'nin şartları cihaz manifest dosyası ile karşılanmalıdır (gereksinimler için zorunlu kılınır.

system_ext FCM ve ürün FCM'si, cihaza özel FCM'nin (yüklü (sistem bölümünde).

  • Cihaz FCM'si, sistem bölümü hakkında daha fazla bilgi edinin.
  • system_ext FCM, system_ext bölümündeki modüllerin gereksinimlerini yansıtmalıdır.
  • Ürün FCM, ürün bölümü.

Tüm FCM'ler, bir OEM’nin sistem, ürün, araç ve sistem çerçevesinde yaptığı system_ext bölümlerinin içinde yer alır. Örneğin, ürün bölümünde yüklü bir uygulama bir tedarikçi firma uzantısı kullanıyorsa için, HAL arayüzü zorunluluklarının aynı zamanda ürün FCM'si.

Örnek sistem uyumluluk matrisi 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 bilgi için bkz. FCM Yaşam döngüsü.

Ürün uyumluluk matrisi

Ürün FCM, ürünün çerçeve uyumluluk matrisi dosyasıdır. bölüm. VINTF nesnesi, ürün FCM'sini sistemdeki FCM'lerle birleştirir ve system_ext bölümleri vardır.

Ö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>

Sistem uzantısı uyumluluk matrisi

system_ext FCM, system_ext dosyasındaki bir çerçeve uyumluluk matrisi dosyasıdır. bölüm. VINTF nesnesi, system_ext FCM'yi sistem ve üründeki FCM'lerle birleştirir bölümleri vardır. Ürün uyumluluk matrisine bakın sistem_ext FCM dosyası olabilir.

Cihaz uyumluluk matrisi (DCM)

Cihaz uyumluluk matrisi, cihazla ilgili (lansman ve OSA zamanında zorunlu kılınan gereklilikler) tam olması gerekir.

Ö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ı "zorunlu" etiketleri Android kaynak ağacındaki kaynak dosyada eksik olabilir ve assemble_vintf. olduğunu unutmayın. "Zorunlu" etiketleri, olanak tanır.

?xml
İsteğe bağlı. Yalnızca XML ayrıştırıcıya bilgi sağlar.
compatibility-matrix.version
Zorunlu. Bu uyumluluk matrisinin meta sürümü. Elementleri açıklar beklenen sonucu verir. XML sürümüyle ilgili değildir.
compatibility-matrix.type
Zorunlu. 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 product ve system_ext bölümlerinde çerçeve uyumluluğu matrisi dosyalarında izin verilir. Bu dosyanın Çerçeve Uyumluluk Matrisi Sürümü'nü (FCM Sürümü) belirtir. Bunu bildirme matrislerinde (ör. DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE) tıklayın.
compatibility-matrix.hal
İsteğe bağlıdır ve tekrarlanabilir. Aşağıdaki özelliklere sahip tek bir HAL (HIDL veya yerel) listeleyen: uyumluluk matrisinin (çerçeve veya cihaz) sahip olması için gereken devam eder. HAL girişleri bir <name> öğesiyle ayrılır; aynı ada sahip birden fazla HAL girişi olabilir ("ve" koşulunu ifade eder).
compatibility-matrix.hal.format
İsteğe bağlı. Değer şunlardan biri olabilir:
  • "hidl": HIDL HAL'leri. Bu, varsayılan ayardı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
Özellik isteğe bağlıdır ve varsayılan olarak false (yanlış) değerine ayarlanır. Bu HAL'nin uyumluluk matrisinin (çerçeve veya cihaz) sahibi tarafından isteğe bağlıdır. <hal> girişi isteğe bağlı olarak işaretlendi. Bu, sahibin şunları yapabileceği anlamına gelir: bu HAL ile çalışabilir ancak bu HAL'nin mevcut olması gerekmez.
compatibility-matrix.hal.name
Zorunlu. Bu HAL'nin tam paket adı. Örnekler:
  • android.hardware.camera (HIDL veya AIDL HAL)
  • GLES (yerel HAL, yalnızca ad gerekir)
compatibility-matrix.hal.version
. Sürüm aralıklarının listesi (bkz. HAL eşleşmeleri) uyumluluk matrisinin sahibinin hangi sürümlerini (çerçeve veya olması gerekir.

HIDL ve yerel HAL'ler için zorunludur, yineleme olmadan tekrarlanabilir. Biçim aşağıdakilerden biri olmalıdır:
  • MAJOR.MINOR_MIN-MINOR_MAX
  • MAJOR.MINOR (şuna eşittir: MAJOR.MINOR-MINOR)
ziyaret edin.
AIDL HAL'ler için, Android çalıştıran cihazlarda mevcut olmamalıdır 11 ve önceki sürümler. Cihazlarda isteğe bağlıdır. çalıştırmalarını öğreteceğim. Belirtilmesi durumunda biçim, aşağıdakilerden biri olur:
  • VERSION_MIN-VERSION_MAX
  • VERSION (şuna eşittir: VERSION-VERSION)
ziyaret edin. Belirtilmemişse varsayılan değer 1 olur.
compatibility-matrix.hal.interface
İsteğe bağlı, tekrarlanabilir. Bu HAL için gerekli arayüzlerin listesi.
compatibility-matrix.hal.interface.name
Zorunlu. Arayüzün adı.
compatibility-matrix.hal.interface.instance
İsteğe bağlı, tekrarlanabilir. Bu arayüzün gerekli örneklerinin listesi.
compatibility-matrix.hal.interface.regex-instance
İsteğe bağlı, tekrarlanabilir. Bu öğedeki gerekli örnek adı kalıplarının listesi kullanır. Tekliflerinizi otomatikleştirmek ve optimize etmek için Genişletilmiş Normal İfade biçimindedir.
compatibility-matrix.kernel
İsteğe bağlı, tekrarlanabilir. Çerçevenin çalışacağı çekirdek yapılandırmalarının listesini her çekirdek sürümü için gereken değer olduğunu göreceksiniz.
. Aynı <version> değerine sahip birden çok <kernel>, "ve" ifadesini ima eden ifadeler ilişkilidir. Her <kernel> bir "parçadır" yalnızca <conditions> olduğunda etkinleştirilen koşullar: karşılandı.
compatibility-matrix.kernel.version
Zorunlu. Çekirdek sürümü. Biçim: VERSION.MAJOR_REVISION.MINOR_REVISION Sürüm ve ana düzeltme tam olarak eşleşmelidir. Küçük bir düzeltme, .
compatibility-matrix.kernel.condition
İsteğe bağlı. Her birinin ilk <kernel> için mevcut olmamalıdır sürümünü değil. Koşul listesini belirtir. Koşullar karşılandığında bu <kernel> parçasında belirtilen gereksinimler etkinleştirilir.
compatibility-matrix.kernel.config
İsteğe bağlı, tekrarlanabilir. Olması gereken CONFIG öğeyi listeler bu çekirdek sürümü için eşleşti. Her CONFIG öğe bir anahtar/değer çifti eşleme yapılandırma öğeleri anahtara göre ayrılır.
compatibility-matrix.kernel.config.key
Zorunlu. CONFIG öğesinin anahtar adı. Şununla başlayan: CONFIG_
compatibility-matrix.kernel.config.value
Zorunlu. CONFIG öğenin değeri. Biçim, türe bağlıdır:
  • string Tırnak işaretleri atlanır.
  • int Ondalık ve onaltılık (0x ile başlamalıdır) veya 0X)değerleri kabul edilir. 64 bitlik bir tam sayı olarak yorumlanır. kelimelerin kırpılmasına neden olur. (Ayrıştırıcı, -264 + 1 değerlerini kabul eder 264 olarak ayarlayın; 1, 65. bit kısaltılır; Ayrıntılar için Strtoull man sayfası.)
  • range Biçim [int]-[int], ör. 10-20. Onaltılı değerler kabul edilir ve 0x veya 0X. İki sınır, imzasız 64 bit olmalıdır Tam sayı.
  • tristate Geçerli değerler y, m ve n.
compatibility-matrix.kernel.config.value.type
Zorunlu. CONFIG öğesinin değer türü. Şunlardan biri:
  • string
  • int
  • range
  • tristate
compatibility-matrix.sepolicy
Zorunlu. sepolicy ile ilgili tüm girişleri içerir. Yalnızca kullanan çerçeve uyumluluk matrisini inceleyin.
compatibility-matrix.sepolicy.sepolicy-version
Zorunludur, tekrarlanabilir. sepolicy sürümüyle ilgili şartları açıklar. manifest.sepolicy.version öğesine karşılık gelir. Her bir öğesi, bir dizi sepolicy sürümünü tanımlar.
compatibility-matrix.sepolicy.kernel-sepolicy-version
Zorunlu. Çerçevenin çalıştığı policydb sürümünü tanımlar kullanabilirsiniz.
compatibility-matrix.avb.vbmeta-version
İsteğe bağlı; yalnızca çerçeve uyumluluk matrisi tarafından kullanılır. Şunu tanımlar: AVB system.img sürümünü imzalamak için kullanılan sürüm. Android'de desteği sonlandırıldı 10.
compatibility-matrix.vendor-ndk
İsteğe bağlı; tarafından kullanılmasına izin verilmelidir. Şunu tanımlar: VNDK tedarikçisinin anlık görüntüsünün gerekliliğini korur. Eksikse VNDK gereksinimi sağlanmaz ekleyebilirsiniz.
compatibility-matrix.vendor-ndk.version
Zorunlu. tedarikçi firma resmi.
compatibility-matrix.vendor-ndk.library
İsteğe bağlı, tekrarlanabilir. tedarikçi imajıdır. manifest.vendor-ndk.library ile aynı anlamlara sahiptir.
compatibility-matrix.system-sdk.version
İsteğe bağlı, tekrarlanabilir; tarafından kullanılmasına izin verilmelidir. Beyanlar Google Analytics 4.0, sistem SDK'sı sürümlerindeki tedarikçi uygulamalarının Eksikse Sistem SDK'sı yok gereklilikler sistem görüntüsünde belirtilir.