Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Ma trận tương thích

Phần này mô tả khung và ma trận tương thích thiết bị và lược đồ ma trận tương thích . Để biết quy tắc đối sánh, hãy xem Quy tắc đối sánh .

Ma trận tương thích khung (FCM)

Ma trận tương thích khung (FCM) mô tả các yêu cầu của khung trên thiết bị mà nó chạy. Ma trận tương thích khung bao gồm ma trận tương thích hệ thống, ma trận tương thích sản phẩmma trận tương thích system_ext . Các yêu cầu của FCM phải được đáp ứng bởi bản kê khai thiết bị (các yêu cầu được thực thi tại thời gian xây dựng, thời gian chạy và trong VTS).

FCM system_ext và FCM sản phẩm là phần bổ sung của FCM dành riêng cho thiết bị (được cài đặt trong phân vùng hệ thống).

  • FCM của thiết bị phải phản ánh các yêu cầu của mô-đun trong phân vùng hệ thống .
  • FCM system_ext phải phản ánh các yêu cầu theo mô-đun trong phân vùng system_ext.
  • Sản phẩm FCM phải phản ánh các yêu cầu theo mô-đun trong phân vùng sản phẩm .

Tất cả các FCM phải phù hợp với các sửa đổi của OEM đối với khuôn khổ trong phân vùng hệ thống, sản phẩm và system_ext. Ví dụ: nếu một ứng dụng được cài đặt trong phân vùng sản phẩm sử dụng phần mở rộng của nhà cung cấp của giao diện HAL, thì yêu cầu giao diện HAL phải được khai báo trong FCM sản phẩm.

Tệp ma trận khả năng tương thích hệ thống mẫu:

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

Để biết thêm chi tiết, hãy xem Vòng đời FCM .

Ma trận tương thích sản phẩm

Sản phẩm FCM là một tệp ma trận khả năng tương thích khung trong phân vùng sản phẩm. Đối tượng VINTF tham gia FCM sản phẩm với các FCM trong hệ thống và phân vùng system_ext trong thời gian chạy.

Tệp FCM sản phẩm mẫu:

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

Ma trận tương thích system_ext

System_ext FCM là một tệp ma trận khả năng tương thích khung trong phân vùng system_ext. Đối tượng VINTF tham gia FCM system_ext với các FCM trong phân vùng hệ thống và sản phẩm trong thời gian chạy. Xem ma trận khả năng tương thích của sản phẩm để biết tệp FCM system_ext mẫu.

Ma trận tương thích thiết bị (DCM)

Ma trận tính tương thích của thiết bị mô tả một tập hợp các yêu cầu mà thiết bị mong đợi từ khuôn khổ (các yêu cầu được thực thi khi khởi chạy và thời gian OTA).

Tệp DCM mẫu:

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

Lược đồ ma trận tương thích

Phần này mô tả ý nghĩa của các thẻ XML này. Một số thẻ "bắt buộc" có thể bị thiếu trong tệp nguồn trong cây nguồn Android và được viết bởi assemble_vintf tại thời điểm xây dựng. Các thẻ "bắt buộc" phải có trong các tệp tương ứng trên thiết bị.

?xml
Không bắt buộc. Nó chỉ cung cấp thông tin cho trình phân tích cú pháp XML.
compatibility-matrix.version
Yêu cầu. Phiên bản meta của ma trận tương thích này. Mô tả các yếu tố được mong đợi trong ma trận tương thích. Không liên quan đến phiên bản XML.
compatibility-matrix.type
Yêu cầu. Loại ma trận tương thích này:
  • "device" : Ma trận khả năng tương thích của thiết bị.
  • "framework" : Ma trận khả năng tương thích của khung.
manifest.level
Cần thiết cho ma trận tương thích khung. Trong Android 12 trở lên, được phép trong các tệp ma trận tương thích khung trong phân vùng product và system_ext. Chỉ định Phiên bản Ma trận Tương thích Khung (Phiên bản FCM) của tệp này. Không khai báo điều này trong ma trận tương thích khung dành riêng cho thiết bị (tức là DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE ).
compatibility-matrix.hal
Tùy chọn và có thể lặp lại. Liệt kê một HAL (HIDL hoặc gốc) được chủ sở hữu của ma trận tương thích (khung hoặc thiết bị) yêu cầu phải có mặt. Các mục nhập HAL được phân biệt bởi một phần tử <name> ; có thể có một số mục nhập HAL có cùng tên (ngụ ý "và" điều kiện).
compatibility-matrix.hal.format
Không bắt buộc. Giá trị có thể là một trong số:
  • "hidl" : HIDL HALs. Đây là mặc định.
  • "aidl" : AIDL HAL . Chỉ hợp lệ trên meta ma trận tương thích phiên bản 2.0.
  • "native" : HALs bản địa.
compatibility-matrix.hal.optional
Thuộc tính là tùy chọn và mặc định là false. Nêu rõ liệu HAL này có phải là tùy chọn đối với chủ sở hữu của ma trận tương thích (khung hoặc thiết bị) hay không. Nếu mục nhập <hal> được đánh dấu là tùy chọn, điều đó có nghĩa là chủ sở hữu có thể làm việc với HAL này, nếu có, nhưng không yêu cầu nó phải có mặt.
compatibility-matrix.hal.name
Yêu cầu. Tên gói đầy đủ của HAL này. Ví dụ:
  • android.hardware.camera (HIDL hoặc AIDL HAL)
  • GLES (HAL bản địa, chỉ yêu cầu tên)
compatibility-matrix.hal.version
Danh sách các phạm vi phiên bản (xem đối sánh HAL ) xác định phiên bản mà chủ sở hữu của ma trận tương thích (khung hoặc thiết bị) mong đợi.

Đối với HIDL và HAL gốc, bắt buộc, có thể lặp lại mà không có bản sao. Định dạng là một trong những định dạng sau:
  • MAJOR . MINOR_MIN - MINOR_MAX
  • MAJOR . MINOR (tương đương với MAJOR . MINOR - MINOR )

Đối với AIDL HAL, không được xuất hiện trên các thiết bị chạy Android 11 trở xuống. Tùy chọn trên các thiết bị chạy phiên bản mới hơn. Nếu được chỉ định, định dạng là một trong những định dạng sau:
  • VERSION_MIN - VERSION_MAX
  • VERSION (tương đương với VERSION - VERSION )
Nếu không phải là không xác định, giá trị mặc định là 1 .
compatibility-matrix.hal.interface
Tùy chọn, có thể lặp lại. Danh sách các giao diện bắt buộc của HAL này.
compatibility-matrix.hal.interface.name
Yêu cầu. Tên của giao diện.
compatibility-matrix.hal.interface.instance
Tùy chọn, có thể lặp lại. Danh sách các phiên bản bắt buộc của giao diện này.
compatibility-matrix.hal.interface.regex-instance
Tùy chọn, có thể lặp lại. Danh sách các mẫu tên phiên bản bắt buộc trên giao diện này. Sử dụng định dạng Cụm từ Thông dụng Mở rộng .
compatibility-matrix.kernel
Tùy chọn, có thể lặp lại. Chỉ định danh sách cấu hình hạt nhân mà khuôn khổ yêu cầu trên mỗi phiên bản hạt nhân.
Có thể tồn tại nhiều <kernel> với cùng một <version> để ngụ ý mối quan hệ "và". Mỗi <kernel> là một "phân đoạn" của các yêu cầu chỉ được bật khi <conditions> được đáp ứng.
compatibility-matrix.kernel.version
Yêu cầu. Phiên bản hạt nhân. Định dạng là VERSION . MAJOR_REVISION . MINOR_REVISION . Phiên bản và bản sửa đổi chính phải khớp chính xác. Bản sửa đổi nhỏ xác định phiên bản LTS tối thiểu của hạt nhân mà khuôn khổ mong đợi.
compatibility-matrix.kernel.condition
Không bắt buộc. Không được tồn tại cho <kernel> đầu tiên của mỗi phiên bản. Chỉ định một danh sách các điều kiện. Chỉ khi các điều kiện được đáp ứng thì các yêu cầu nêu trong đoạn <kernel> này mới được kích hoạt.
compatibility-matrix.kernel.config
Tùy chọn, có thể lặp lại. Liệt kê các mục CONFIG phải phù hợp với phiên bản hạt nhân này. Mỗi mục CONFIG là một cặp khóa-giá trị; các mục cấu hình được phân biệt bằng khóa.
compatibility-matrix.kernel.config.key
Yêu cầu. Tên khóa của mục CONFIG . Bắt đầu bằng CONFIG_ .
compatibility-matrix.kernel.config.value
Yêu cầu. Giá trị của mục CONFIG . Định dạng tùy thuộc vào loại:
  • string . Trích dẫn được bỏ qua.
  • int . Giá trị thập phân và thập lục phân (phải bắt đầu bằng 0x hoặc 0X) được chấp nhận. Được diễn giải dưới dạng số nguyên 64 bit; tràn dẫn đến cắt ngắn. (Trình phân tích cú pháp chấp nhận các giá trị từ -2 64 + 1 đến 2 64 - 1, bit thứ 65 bị cắt bớt; để biết chi tiết, hãy tham khảo trang strtoull man .)
  • range . Định dạng là [int]-[int] , ví dụ: 10-20 . Giá trị hệ thập lục phân được chấp nhận và phải bắt đầu bằng 0x hoặc 0X . Hai ranh giới phải là một số nguyên 64 bit không dấu.
  • tristate . Các giá trị hợp lệ là y , mn .
compatibility-matrix.kernel.config.value.type
Yêu cầu. Loại giá trị của mục CONFIG , một trong số:
  • string
  • int
  • range
  • tristate
compatibility-matrix.sepolicy
Yêu cầu. Chứa tất cả các mục liên quan đến chính sách. Chỉ được sử dụng bởi ma trận tương thích khung.
compatibility-matrix.sepolicy.sepolicy-version
Bắt buộc, có thể lặp lại. Mô tả yêu cầu về phiên bản riêng biệt. Tương ứng với manifest.sepolicy.version . Mỗi phiên bản của một phần tử xác định một loạt các phiên bản riêng biệt.
compatibility-matrix.sepolicy.kernel-sepolicy-version
Yêu cầu. Khai báo phiên bản policydb mà khung làm việc.
compatibility-matrix.avb.vbmeta-version
Không bắt buộc; chỉ được sử dụng bởi ma trận tương thích khung. Khai báo phiên bản AVB được sử dụng để ký system.img . Không được dùng nữa trong Android 10.
compatibility-matrix.vendor-ndk
Không bắt buộc; chỉ được sử dụng bởi ma trận khả năng tương thích của thiết bị. Khai báo yêu cầu của ảnh chụp nhanh nhà cung cấp VNDK. Nếu thiếu, không yêu cầu VNDK được thực hiện trên hình ảnh hệ thống.
compatibility-matrix.vendor-ndk.version
Yêu cầu. Một số nguyên dương khai báo phiên bản VNDK theo yêu cầu của hình ảnh nhà cung cấp.
compatibility-matrix.vendor-ndk.library
Tùy chọn, có thể lặp lại. Khai báo một bộ thư viện VNDK theo yêu cầu của hình ảnh nhà cung cấp. Ngữ nghĩa giống như manifest.vendor-ndk.library .
compatibility-matrix.system-sdk.version
Tùy chọn, có thể lặp lại; chỉ được sử dụng bởi ma trận khả năng tương thích của thiết bị. Khai báo yêu cầu của các ứng dụng của nhà cung cấp trên các phiên bản SDK hệ thống. Nếu thiếu, không có yêu cầu SDK hệ thống nào được thực hiện trên hình ảnh hệ thống.