เมทริกซ์ความเข้ากันได้

ส่วนนี้จะอธิบายเฟรมเวิร์กและเมทริกซ์ความเข้ากันได้ของอุปกรณ์ และ สคีมาเมทริกซ์ความเข้ากันได้ สำหรับ กฎการจับคู่ โปรดดูการจับคู่ กฎ

เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM)

เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (FCM) อธิบายข้อกำหนดของ ในอุปกรณ์ที่โมเดลใช้ทำงาน เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กประกอบด้วยระบบ เมทริกซ์ความเข้ากันได้ เมทริกซ์ความเข้ากันได้ของผลิตภัณฑ์ และเมทริกซ์ความเข้ากันได้ของ system_ext ข้อกำหนดของ FCM ต้องเป็นไปตามไฟล์ Manifest ของอุปกรณ์ (ข้อกำหนด บังคับใช้ในเวลาบิลด์ รันไทม์ และใน VTS)

FCM ระบบ และ FCM ของผลิตภัณฑ์เป็นส่วนเสริมของ FCM เฉพาะอุปกรณ์ (ที่ติดตั้งแล้ว ในพาร์ติชันระบบ)

  • FCM ของอุปกรณ์ควรเป็นไปตามข้อกำหนดของโมดูลใน พาร์ติชันระบบ
  • FCM ของ system_ext ควรสอดคล้องกับข้อกำหนดตามโมดูลในพาร์ติชัน system_ext
  • FCM ของผลิตภัณฑ์ควรเป็นไปตามข้อกำหนดแยกตามโมดูลใน การแบ่งส่วนผลิตภัณฑ์

FCM ทั้งหมดควรสอดคล้องกับการแก้ไขของ OEM ที่มีต่อเฟรมเวิร์กในระบบ ผลิตภัณฑ์ และพาร์ติชัน system_ext ตัวอย่างเช่น หากแอปที่ติดตั้งในพาร์ติชันผลิตภัณฑ์ใช้ส่วนขยายผู้ให้บริการ ของอินเทอร์เฟซ HAL ข้อกำหนดอินเทอร์เฟซ HAL ควรประกาศไว้ในส่วน FCM ของผลิตภัณฑ์

ตัวอย่างไฟล์เมทริกซ์ความเข้ากันได้ของระบบ

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

โปรดดูรายละเอียดเพิ่มเติมที่ FCM วงจร

เมทริกซ์ความเข้ากันได้ของผลิตภัณฑ์

FCM ของผลิตภัณฑ์คือไฟล์เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กในผลิตภัณฑ์ พาร์ติชัน ออบเจ็กต์ VINTF รวม FCM ของผลิตภัณฑ์กับ FCM ในระบบและ system_ext พาร์ติชันระหว่างรันไทม์

ตัวอย่างไฟล์ FCM ของผลิตภัณฑ์

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

system_ext FCM คือไฟล์เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กใน system_ext พาร์ติชัน ออบเจ็กต์ VINTF รวม FCM ระบบ system_ext กับ FCM ในระบบและผลิตภัณฑ์ พาร์ติชันระหว่างรันไทม์ โปรดดูเมทริกซ์ความเข้ากันได้ของผลิตภัณฑ์ ไฟล์ system_ext FCM เป็นตัวอย่าง

เมทริกซ์ความเข้ากันได้ของอุปกรณ์ (DCM)

เมทริกซ์ความเข้ากันได้ของอุปกรณ์อธิบายชุดข้อกำหนดที่อุปกรณ์ จากเฟรมเวิร์ก (ข้อกำหนดที่บังคับใช้ตอนเปิดตัวและเวลา OTA)

ตัวอย่างไฟล์ 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>

สคีมาเมทริกซ์ความเข้ากันได้

ส่วนนี้จะอธิบายความหมายของแท็ก XML เหล่านี้ "ต้องระบุ" บางส่วน แท็กทั้งหมด อาจหายไปจากไฟล์ต้นฉบับในโครงสร้างแหล่งที่มาของ Android และเขียนโดย assemble_vintf ขณะสร้าง "ต้องระบุ" ต้องแสดงในไฟล์ที่เกี่ยวข้องใน อุปกรณ์

?xml
ไม่บังคับ โดยจะให้ข้อมูลกับโปรแกรมแยกวิเคราะห์ XML เท่านั้น
compatibility-matrix.version
ต้องระบุ เวอร์ชันเมตาของเมทริกซ์ความเข้ากันได้นี้ อธิบายองค์ประกอบ ในเมทริกซ์ความเข้ากันได้ ไม่เกี่ยวข้องกับเวอร์ชัน XML
compatibility-matrix.type
ต้องระบุ ประเภทของเมทริกซ์ความเข้ากันได้
  • "device": เมทริกซ์ความเข้ากันได้ของอุปกรณ์
  • "framework": เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก
manifest.level
ต้องระบุสำหรับเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก ใน Android 12 ขึ้นไป อนุญาตในไฟล์เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กในพาร์ติชันผลิตภัณฑ์และ System_ext ระบุเวอร์ชันเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก (เวอร์ชัน FCM) ของไฟล์นี้ ไม่ประกาศ ในเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กเฉพาะอุปกรณ์ (เช่น DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE)
compatibility-matrix.hal
ไม่บังคับและทำซ้ำได้ แสดง HAL (HIDL หรือเนทีฟ) รายการเดียวที่ ที่เจ้าของเมทริกซ์ความเข้ากันได้ (เฟรมเวิร์กหรืออุปกรณ์) กำหนดไว้เพื่อให้ ปัจจุบัน รายการ HAL จะแยกความแตกต่างตามองค์ประกอบ <name> อาจมีรายการ HAL หลายรายการที่มีชื่อเดียวกัน (บอกเป็นนัยเงื่อนไข "and")
compatibility-matrix.hal.format
ไม่บังคับ ค่าอาจเป็นค่าใดค่าหนึ่งต่อไปนี้
  • "hidl": HIDL HAL โดยตัวเลือกนี้คือค่าเริ่มต้น
  • "aidl": AIDL HAL ใช้ได้กับเมทริกซ์ความเข้ากันได้ เมทริกซ์ เวอร์ชัน 2.0 เท่านั้น
  • "native": HAL ดั้งเดิม
compatibility-matrix.hal.optional
แอตทริบิวต์ที่ไม่บังคับและมีค่าเริ่มต้นเป็น "เท็จ" ระบุว่า HAL นี้เป็น ไม่บังคับสำหรับเจ้าของเมทริกซ์ความเข้ากันได้ (เฟรมเวิร์กหรืออุปกรณ์) หากมี มีการทำเครื่องหมายรายการ <hal> ว่าไม่บังคับ ซึ่งหมายความว่าเจ้าของสามารถ ให้ทำงานร่วมกับ HAL นี้ หากมี แต่ไม่จำเป็นต้องปรากฏ
compatibility-matrix.hal.name
ต้องระบุ ชื่อแพ็กเกจแบบเต็มของ HAL นี้ ตัวอย่าง:
  • android.hardware.camera (HIDL หรือ AIDL HAL)
  • GLES (HAL แบบดั้งเดิม ต้องใช้ชื่อเท่านั้น)
compatibility-matrix.hal.version
รายการช่วงเวอร์ชัน (โปรดดู ตรงกันกับ HAL) ซึ่งกำหนดเวอร์ชันของเจ้าของเมทริกซ์ความเข้ากันได้ (เฟรมเวิร์กหรือ อุปกรณ์) ที่คาดหมาย

จำเป็นต้องมีคำสั่ง HIDL และ HAL แบบดั้งเดิม สามารถสร้างซ้ำโดยไม่ทำซ้ำ มีรูปแบบอย่างใดอย่างหนึ่งต่อไปนี้
  • MAJOR.MINOR_MIN-MINOR_MAX
  • MAJOR.MINOR (เทียบเท่ากับ MAJOR.MINOR-MINOR)
วันที่
สำหรับ AIDL HAL ต้องไม่มีอยู่ในอุปกรณ์ที่ใช้ Android 11 หรือต่ำกว่า ไม่บังคับในอุปกรณ์ ที่ใช้เวอร์ชันที่ใหม่กว่า หากระบุ รูปแบบจะเป็นอย่างใดอย่างหนึ่งต่อไปนี้
  • VERSION_MIN-VERSION_MAX
  • VERSION (เทียบเท่ากับ VERSION-VERSION)
หากไม่ระบุ ค่าเริ่มต้นจะเป็น 1
compatibility-matrix.hal.interface
ไม่บังคับ ทำซ้ำได้ รายการอินเทอร์เฟซที่จำเป็นสำหรับ HAL นี้
compatibility-matrix.hal.interface.name
ต้องระบุ ชื่ออินเทอร์เฟซ
compatibility-matrix.hal.interface.instance
ไม่บังคับ ทำซ้ำได้ รายการอินสแตนซ์ที่จำเป็นของอินเทอร์เฟซนี้
compatibility-matrix.hal.interface.regex-instance
ไม่บังคับ ทำซ้ำได้ รายการรูปแบบชื่ออินสแตนซ์ที่จำเป็นในกรณีนี้ ของ Google ใช้ ขยาย รูปแบบนิพจน์ทั่วไป
compatibility-matrix.kernel
ไม่บังคับ ทำซ้ำได้ ระบุรายการการกำหนดค่าเคอร์เนลที่เฟรมเวิร์ก ในเวอร์ชันเคอร์เนลแต่ละเวอร์ชัน
<kernel> หลายรายการที่มี <version> เดียวกันสามารถ มีไว้เพื่อบอกเป็นนัยว่า "และ" ความสัมพันธ์ <kernel> แต่ละรายการคือ "ส่วนย่อย" ของข้อกำหนดที่เปิดใช้เฉพาะเมื่อ <conditions> ตรงตามความต้องการ
compatibility-matrix.kernel.version
ต้องระบุ เวอร์ชันเคอร์เนล รูปแบบ คือ VERSION.MAJOR_REVISION.MINOR_REVISION เวอร์ชันและการแก้ไขหลักต้องตรงกันทั้งหมด การแก้ไขเล็กน้อยกำหนด เวอร์ชัน LTS ขั้นต่ำที่เฟรมเวิร์กคาดว่าจะได้รับ
compatibility-matrix.kernel.condition
ไม่บังคับ ต้องไม่มีอยู่ใน <kernel> แรกของแต่ละรายการ เวอร์ชัน ระบุรายการเงื่อนไข เมื่อมีคุณสมบัติตรงตามเงื่อนไข เปิดใช้ข้อกำหนดที่ระบุไว้ในส่วนย่อย <kernel> นี้แล้ว
compatibility-matrix.kernel.config
ไม่บังคับ ทำซ้ำได้ แสดงรายการ CONFIG รายการที่จำเป็นต้อง ที่ตรงกันสำหรับเวอร์ชันเคอร์เนลนี้ แต่ละรายการของ CONFIG เป็นคีย์-ค่า จับคู่; รายการการกําหนดค่าจะแตกต่างกันไปตามคีย์
compatibility-matrix.kernel.config.key
ต้องระบุ ชื่อคีย์ของ CONFIG ขึ้นต้นด้วย CONFIG_
compatibility-matrix.kernel.config.value
ต้องระบุ ค่าของรายการ CONFIG รูปแบบจะขึ้นอยู่กับประเภท ดังนี้
  • string ไม่รวมเครื่องหมายคำพูด
  • int ทศนิยมและฐานสิบหก (ต้องขึ้นต้นด้วย 0x หรือ 0X)ค่าที่ใช้ได้ ตีความเป็นจำนวนเต็ม 64 บิต รายการเพิ่มเติมจะทำให้มีการตัดข้อความ (แยกวิเคราะห์ยอมรับค่าจาก -264 + 1 เป็น 264 - 1, 65 บิตจะถูกตัด โปรดดูรายละเอียดที่ Strtoull man page)
  • range มีรูปแบบเป็น [int]-[int] เช่น 10-20 ระบบยอมรับค่าฐานสิบหกและต้องขึ้นต้นด้วย 0x หรือ 0X ขอบเขต 2 แบบต้องเป็นแบบ 64 บิตที่ไม่มีการรับรอง จำนวนเต็ม
  • tristate ค่าที่ถูกต้องคือ y, m และ n
compatibility-matrix.kernel.config.value.type
ต้องระบุ ประเภทค่าของรายการ CONFIG ซึ่งเป็นค่าใดค่าหนึ่งต่อไปนี้
  • string
  • int
  • range
  • tristate
compatibility-matrix.sepolicy
ต้องระบุ มีรายการที่เกี่ยวข้องกับ Sepolicy ทั้งหมด ใช้เฉพาะโดย เมทริกซ์ความเข้ากันได้ของเฟรมเวิร์ก
compatibility-matrix.sepolicy.sepolicy-version
ต้องระบุ ทำซ้ำได้ อธิบายข้อกำหนดสำหรับเวอร์ชัน Sepolicy ตรงกับ manifest.sepolicy.version อินสแตนซ์แต่ละรายการของ จะเป็นตัวกำหนดช่วงของเวอร์ชัน Sepolicy
compatibility-matrix.sepolicy.kernel-sepolicy-version
ต้องระบุ ประกาศเวอร์ชัน policydb ที่เฟรมเวิร์กใช้งานได้ ด้วย
compatibility-matrix.avb.vbmeta-version
ไม่บังคับ ที่ใช้โดยเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กเท่านั้น ประกาศ AVB version ที่ใช้เพื่อลงนาม system.img เลิกใช้งานใน Android 10.
compatibility-matrix.vendor-ndk
ไม่บังคับ ที่ใช้โดยเมทริกซ์ความเข้ากันได้ของอุปกรณ์เท่านั้น ประกาศ ข้อกำหนดของภาพรวมผู้ให้บริการ VNDK หากไม่มี ก็จะไม่มีการปฏิบัติตามข้อกำหนด VNDK บนอิมเมจระบบ
compatibility-matrix.vendor-ndk.version
ต้องระบุ จำนวนเต็มบวกซึ่งระบุเวอร์ชัน VNDK ที่กำหนดโดย รูปภาพผู้ให้บริการ
compatibility-matrix.vendor-ndk.library
ไม่บังคับ ทำซ้ำได้ ประกาศชุดไลบรารี VNDK ที่กฎหมายอนุญาต รูปภาพผู้ให้บริการ มีการใช้ความหมายเดียวกับ manifest.vendor-ndk.library
compatibility-matrix.system-sdk.version
ไม่บังคับ ทำซ้ำได้ ที่ใช้โดยเมทริกซ์ความเข้ากันได้ของอุปกรณ์เท่านั้น การประกาศ ข้อกำหนดของแอปของผู้ให้บริการในเวอร์ชัน SDK ของระบบ หากไม่มี แสดงว่าไม่มี SDK ระบบ จะมีขึ้นในอิมเมจระบบ