Android 10 zapewnia obsługę tworzenia
odm
partycje korzystające z systemu kompilacji Androida.
Informacje o partycjach ODM
Producenci oryginalnych elementów (ODM) dostosowują dostawcę rozwiązań SOC pakiety pomocy na płytach głównych (BSP) na ich konkretne urządzenia (płytki). Ten umożliwia wdrożenie modułów jądra dla komponentów specyficznych dla płytki. demony typowe dla płytek lub ich własne funkcje w warstwach abstrakcji sprzętowej (HAL). Może też wymienić lub dostosować komponenty SOC.
W niższych wersjach Androida takie dostosowania uniemożliwiały wykorzystanie
dla urządzeń z tym samym układem SOC (lub z innymi układami, ale
tej samej rodziny). W Androidzie 10 i nowszych możesz używać funkcji
oddzielnej partycji odm
na potrzeby
dostosowywania, co pozwala
Użyć jednego obrazu dostawcy dla wielu kodów SKU sprzętu.
Używaj partycji usługi i ODM
W Androidzie 9 dodano obsługę tworzenia
product
partycji, co umożliwia użycie jednego obrazu systemu z wieloma programami.
Kody SKU dostarczone przez różne obrazy (product.img
). Natomiast
Partycja product
jest przeznaczona dla kodów SKU oprogramowania,
Partycja odm
jest przeznaczona dla kodów SKU sprzętu.
Dzięki dedykowanym partycjom usługi i ODM możesz używać interfejsu system
partycja do hostowania ogólnego kodu do współdzielenia przez wiele kodów SKU oprogramowania,
Partycja vendor
do hostowania kodu BSP powiązanego z SOC, który będzie współużytkowany
na podstawie danego układu SOC.
Stosowanie osobnych partycji ma pewne wady, np. trudność w zarządzaniu miejsca na dysku (na przykład musisz zarezerwować ograniczoną ilość miejsca na przyszłość wzrost). Jednak w Androidzie 10 obsługa partycje dynamiczne rozwiązuje problem z dyskiem i powoduje ponowne partycjonowanie urządzenia podczas aktualizację bezprzewodową (OTA).
Komponenty ODM
Partycja odm
zawiera te komponenty specyficzne dla ODM
(podobnie jak w przypadku partycji vendor
) wymienionej w tabeli poniżej.
Komponent specyficzny dla ODM | Lokalizacja |
---|---|
Ładowane moduły jądra (LKM) | /odm/lib/modules/*.ko |
Biblioteki natywne | /odm/lib[64] |
Listy HAL | /odm/lib[64]/hw |
Zasady SE | /odm/etc/selinux |
Obiekt VINTF dane | /odm/etc/vintf |
init.rc
pliki |
/odm/etc/init |
Właściwości systemowe | /odm/build.prop |
Nakładki zasobów środowiska wykonawczego (RRO) | /odm/overlay/*.apk |
Aplikacje | /odm/app/*.apk |
Aplikacje prywatne | /odm/priv-app/*.apk |
Biblioteki Java | /odm/framework/*.jar |
Konfiguracje systemu Android Framework | /odm/etc/sysconfig/* i /odm/etc/permissions/* |
Brak niestandardowych obrazów
Nie używaj niestandardowy obrazów, bo nie są w nich obsługiwane:
- Instalacja modułu w określonym miejscu docelowym. Obrazy niestandardowe obsługują kopiowanie artefaktów do obrazu, ale nie zainstalować moduł w określonej partycji, określając partycję docelową. jako część reguły kompilacji.
- Soong. Nie można skompilować za pomocą:
custom_images
czyli system kompilacji Soong. - Aktualizacja OTA. Obrazy niestandardowe są używane jako: które nie mogą być edytowane przez OTA.
Utrzymywanie interfejsów ABI między partycjami
Partycja odm
jest rozszerzeniem vendor
.
partycji danych. Jeśli zastanawiasz się nad stabilnością interfejsu binarnego aplikacji (ABI),
z myślą o takiej architekturze.
Rysunek 1. Obsługa interfejsu ABI między partycjami.
- Brak stabilności ABI między
odm
a Liczba partycji:vendor
. Obie partycje muszą zostać uaktualnione w tym samym czasie obecnie się znajdujesz. - Partycje
odm
ivendor
mogą zależeć od siebie nawzajem, ale partycjavendor
musi działać bez partycjiodm
. - Interfejs ABI między
odm
asystem
jest taki sam jak interfejsu ABI międzyvendor
asystem
.
Bezpośrednia interakcja między partycją product
a sekcją
Partycja vendor
lub odm
nie jest
dozwolone. Jest to egzekwowane przez zasadę SEpolicy.
Wdróż partycje ODM
Zanim zaimplementujesz nową partycję, sprawdź powiązany AOSP zmian.
Konfigurowanie partycji ODM
Aby skonfigurować partycje (odm
), uwzględnij te flagi kompilacji:
BOARD_ODMIMAGE_PARTITION_SIZE
w przypadku stałego rozmiaru partycjiPRODUCT_USE_DYNAMIC_PARTITIONS
iBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
za partycja dynamiczna rozmiar- Typ systemu plików usługi
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
używany na potrzeby Obraz ODM PRODUCT_ODM_PROPERTIES
za/odm/build.prop
dla użyj w elemencie$(call inherit-product path/to/device.mk)
, na przykładPRODUCT_ODM_PROPERTIES += product.abc=ok
Instalowanie modułu na partycji ODM
Użyj tych flag kompilacji, aby zainstalować moduł na partycji odm
:
device_specific: true
w:Android.bp
LOCAL_ODM_MODULE := true
w:Android.mk
Włącz weryfikację podczas uruchamiania
Aby zapobiec manipulacjom złośliwego oprogramowania na partycjach odm
,
włącz weryfikację podczas uruchamiania Androida
(AVB) dla tych partycji (podobnie jak w przypadku vendor
i
system
partycji).
Aby włączyć AVB, uwzględnij flagę kompilacji
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
Szczegółowe informacje na temat konfigurowania
AVB na partycjach dynamicznych, patrz
Konfiguracja AVB
zmian.
Traktuj /odm jako kolejną partycję /dostawcę
Aby system obsługiwał partycję odm
jako
vendor
partycji, zastąp wszystkie zakodowane na stałe vendor
.
z użyciem zestawu partycji sprzętowych (obecnie
odm
i vendor
). Ciekawe: vendor
lokalizacje referencyjne na platformie to m.in.
dynamiczna
tag łączący,
pakiet
menedżera i shell/libc
.