W tej sekcji opisano systemy zgodności platformy i urządzeń schemat macierzy zgodności. Dla: reguł dopasowania, patrz sekcja Dopasowywanie Zasady.
Macierz zgodności platformy (FCM)
Tablica zgodności platformy (FCM) opisuje wymagania na urządzeniu, na którym działa. Tablica zgodności platformy składa się z systemu tablica zgodności, tabelę zgodności usług, oraz tabeli zgodności system_ext. Wymagania FCM muszą być spełnione w pliku manifestu urządzenia (wymagania) są egzekwowane w momencie kompilacji, w czasie działania i w VTS).
FCM system_ext i FCM produktu to uzupełnienie FCM dla konkretnego urządzenia (zainstalowanego) na partycji systemowej).
- FCM urządzenia powinno odzwierciedlać wymagania modułów w partycji systemu.
- Parametr system_ext FCM powinien odzwierciedlać wymagania modułów w partycji system_ext.
- FCM produktu powinien odzwierciedlać wymagania zawarte w modułach w partycja produktu.
Wszystkie FCM powinny być zgodne z modyfikacjami producenta OEM w strukturze systemu, produktu, i partycji system_ext. Jeśli na przykład aplikacja zainstalowana na partycji produktu korzysta z rozszerzenia dostawcy interfejsu HAL, wymaganie dotyczące interfejsu HAL należy zadeklarować w FCM produktu.
Przykładowy plik macierzy zgodności systemu:
<?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>
Więcej informacji: FCM. Cykl życia.
Tabela zgodności produktów
FCM produktu to plik macierzy zgodności platformy w usłudze partycji danych. Obiekt VINTF łączy usługę FCM produktu z elementami FCM w systemie i w systemie system_ext partycji w czasie działania.
Przykładowy plik FCM produktu:
<?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>
Tablica zgodności System_ext
Parametr system_ext FCM to plik macierzy zgodności platformy w elemencie system_ext partycji danych. Obiekt VINTF łączy system FCM system_ext z FCM w systemie i produkcie partycji w czasie działania. Zobacz tabelę zgodności usług dla przykładowego pliku system_ext FCM.
Tablica zgodności urządzeń (DCM)
Tablica zgodności urządzenia opisuje zestaw wymagań, które musi spełniać urządzenie których oczekuje w ramach platformy (wymagania są egzekwowane w momencie wprowadzenia na rynek i w czasie aktualizacji OTA).
Przykładowy plik 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>
Schemat macierzy zgodności
W tej sekcji opisano znaczenie tych tagów XML. Niektóre „wymagane” tagi
może brakować w pliku źródłowym w drzewie źródłowym Androida i być zapisane przez
assemble_vintf
w momencie kompilacji. „Wymagane” tagi muszą znajdować się w odpowiednich plikach w
urządzenia.
?xml
- Opcjonalne. Podaje on tylko informacje dla parsera XML.
compatibility-matrix.version
- Wymagane. Metawersja tej macierzy zgodności. Opisuje elementy które nie są oczekiwane w tablicy zgodności. Brak związku z wersją XML.
compatibility-matrix.type
- Wymagane. Typ tej macierzy zgodności:
"device"
: tablica zgodności urządzeń."framework"
: tablica zgodności platformy.
manifest.level
- Wymagane dla macierzy zgodności platformy. Na Androidzie 12 i nowszych
jest dozwolony w plikach macierzy zgodności platformy w partycjach product_ext i system_ext.
Określa wersję macierzy zgodności platformy (wersja FCM) tego pliku. Nie deklaruj
w tabeli zgodności platformy dla określonych urządzeń (np.
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE
). compatibility-matrix.hal
- Opcjonalny i powtarzalny. Zawiera pojedynczy HAL (HIDL lub natywny), który jest
wymagane przez właściciela macierzy zgodności (platformy lub urządzenia)
obecnie. Wpisy HAL różnią się elementem
<name>
; może istnieć kilka wpisów HAL o tej samej nazwie (oznacza warunek „and”). compatibility-matrix.hal.format
- Opcjonalne. Możliwe wartości:
"hidl"
: wartości HAL HIDL. Jest to ustawienie domyślne."aidl"
: HAL AIDL. Dotyczy tylko metawersji 2.0 macierzy zgodności."native"
: natywne identyfikatory HAL.
compatibility-matrix.hal.optional
- Atrybut jest opcjonalny i jego domyślna wartość to fałsz. Określa, czy ta wartość HAL jest
(opcjonalnie) właścicielowi macierzy zgodności (platformy lub urządzenia). Jeśli
Wpis
<hal>
jest oznaczony jako opcjonalny, co oznacza, że właściciel może obsługuje HAL, jeśli istnieje, ale nie wymaga jego obecności. compatibility-matrix.hal.name
- Wymagane. Pełna nazwa pakietu tej HAL. Przykłady:
android.hardware.camera
(HIDL lub AIDL HAL)GLES
(natywna HAL, wymaga tylko nazwy)
compatibility-matrix.hal.version
-
Listę zakresów wersji (patrz:
Dopasowania HAL)
określający, do których wersji matryca zgodności (platforma lub
urządzenia)).
W przypadku HIDL i natywnych HAL wymagane, mogą się powtarzać bez duplikatów. Format jest jeden z tych:MAJOR.MINOR_MIN-MINOR_MAX
MAJOR.MINOR
(odpowiednikMAJOR.MINOR-MINOR
).
Listy HAL AIDL nie mogą znajdować się na urządzeniach z Androidem 11 i mniej. Opcjonalny na urządzeniach w późniejszych wersjach. Jeśli określisz format, będzie on miał jeden z tych formatów:VERSION_MIN-VERSION_MAX
VERSION
(odpowiednikVERSION-VERSION
).
1
. compatibility-matrix.hal.interface
- Opcjonalnie, można powtórzyć. Lista wymaganych interfejsów tej HAL.
compatibility-matrix.hal.interface.name
- Wymagane. Nazwa interfejsu.
compatibility-matrix.hal.interface.instance
- Opcjonalnie, można powtórzyć. Lista wymaganych instancji tego interfejsu.
compatibility-matrix.hal.interface.regex-instance
- Opcjonalnie, można powtórzyć. Lista wymaganych wzorców nazw instancji na tej za pomocą prostego interfejsu online. Używaj Rozszerzony w formacie wyrażenia regularnego.
compatibility-matrix.kernel
- Opcjonalnie, można powtórzyć. Określ listę konfiguracji jądra, którą platforma
są wymagane w przypadku każdej wersji jądra systemu operacyjnego.
Jeśli kilka wartości<kernel>
z takim samym atrybutem<version>
może sugerująby „i” relacji. Każdy element<kernel>
jest „fragmentem” wymagań, które są włączone tylko wtedy, gdy<conditions>
mają wartość compatibility-matrix.kernel.version
- Wymagane. Wersja jądra systemu. Obecny format:
VERSION.MAJOR_REVISION.MINOR_REVISION
Wersja i wersja główna muszą być dokładnie takie same. Mała wersja definiuje z minimalną wersją LTS jądra, której oczekuje platforma. compatibility-matrix.kernel.condition
- Opcjonalne. Nie może istnieć dla pierwszych
<kernel>
wartości każdej wersji. Określa listę warunków. Po spełnieniu warunków wymagania określone we fragmencie<kernel>
są włączone. compatibility-matrix.kernel.config
- Opcjonalnie, można powtórzyć. Zawiera listę
CONFIG
elementów, które muszą być pasujące do tej wersji jądra. Każdy elementCONFIG
jest parą klucz-wartość parowanie; a elementy konfiguracji różnią się kluczem. compatibility-matrix.kernel.config.key
- Wymagane. Nazwa klucza elementu
CONFIG
. Zaczyna się odCONFIG_
compatibility-matrix.kernel.config.value
- Wymagane. Wartość elementu
CONFIG
. Format zależy od typu:string
Cudzysłowy są pomijane.int
Ułamki dziesiętne i szesnastkowe (muszą rozpoczynać się od0x
lub0X)
. interpretowana jako 64-bitowa liczba całkowita; powoduje obcięcie danych. (Analizator akceptuje wartości od -264 + 1 do 264 – 1, 65 bit jest obcięty; , aby uzyskać szczegółowe informacje, Strtoull stronie man).range
Format to[int]-[int]
, np.10-20
Wartości szesnastkowe są akceptowane i muszą rozpoczynać się od0x
lub0X
. Dwie granice muszą być nieoznaczone 64-bitową liczba całkowita.tristate
Prawidłowe wartości toy
,m
in
compatibility-matrix.kernel.config.value.type
- Wymagane. Typ wartości elementu
CONFIG
. Możliwe wartości:string
int
range
tristate
compatibility-matrix.sepolicy
- Wymagane. Zawiera wszystkie wpisy związane z sepolicy. Używana tylko przez
compatibility-matrix.sepolicy.sepolicy-version
- Wymagane, można powtarzać. Opisuje wymagania dotyczące wersji sepolicy.
Odpowiada
manifest.sepolicy.version
. Każde wystąpienie określa zakres wersji sepolicy. compatibility-matrix.sepolicy.kernel-sepolicy-version
- Wymagane. Deklaruje, w jakiej wersji
policydb
działa platforma compatibility-matrix.avb.vbmeta-version
- Opcjonalnie; używane tylko przez macierz zgodności platformy. Deklaruje
AVB,
wersji używanej do podpisywania
system.img
. Wycofane na Androidzie 10 compatibility-matrix.vendor-ndk
- Opcjonalnie; używana tylko przez tablicę zgodności urządzeń. Deklaruje wymagania zrzutu dostawcy VNDK. Jeśli go nie ma, nie jest określony żaden wymóg dotyczący VNDK w obrazie systemu.
compatibility-matrix.vendor-ndk.version
- Wymagane. Dodatnia liczba całkowita deklarująca wersję VNDK wymaganą przez i obraz dostawcy.
compatibility-matrix.vendor-ndk.library
- Opcjonalnie, można powtórzyć. Deklaruje zestaw bibliotek VNDK wymaganych przez
zdjęcia dostawcy. Ta sama semantyka co w polu
manifest.vendor-ndk.library
. compatibility-matrix.system-sdk.version
- Opcjonalny, można powtórzyć; używana tylko przez tablicę zgodności urządzeń. Deklaracje wymagania aplikacji dostawcy w przypadku wersji pakietu systemowego pakietu SDK. W razie braku systemowy pakiet SDK jest określone w obrazie systemu.