ota_from_target_files
narzędzie dostępne w build/make/tools/releasetools
, umożliwiające tworzenie pełnych
pakiety OTA dla urządzeń korzystających z aktualizacji systemu A/B lub
Aktualizacje systemu inne niż A/B. Narzędzie przyjmuje jako dane wejściowe plik target-files.zip
wygenerowany przez system kompilacji Androida.
Na urządzeniach z Androidem 11 lub nowszym możesz tworzyć jeden pakiet OTA dla wielu urządzeń z różnymi kodami SKU. Wymagania konfigurowanie urządzeń docelowych pod kątem korzystania z dynamicznych odcisków cyfrowych. i aktualizacja metadanych OTA, tak aby zawierały dane o urządzeniu. imię i nazwisko oraz odcisk cyfrowy we wpisach dotyczących warunku wstępnego i posta.
Wycofane pakiety OTA w Androidzie 8.0 dla urządzeń innych niż A/B, które muszą
zamiast tego użyj blokowanych pakietów OTA. Do
generować oparte na blokach pakiety OTA lub urządzenia z Androidem 7.x lub starszym,
opcję --block
na parametr ota_from_target_files
.
Kompiluj pełne aktualizacje
Pełna aktualizacja to pakiet OTA, który zawiera cały końcowy stan
urządzenia (partycje systemu, rozruchu i przywracania). O ile urządzenie to umożliwia
Po otrzymaniu i zastosowaniu pakietu pakiet może zainstalować kompilację
bez względu na jego bieżący stan. Na przykład:
używając narzędzi do wersji, aby utworzyć archiwum target-files.zip
dla
tardis
na urządzeniu.
. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output
make dist
tworzy pełny pakiet OTA (w formacie $OUT
). Wygenerowany plik .zip
zawiera wszystko, co jest potrzebne do tworzenia pakietów OTA na urządzenie tardis
.
Możesz również skompilować plik ota_from_target_files
jako plik binarny Pythona i wywołać go
tworzyć pakiety pełne lub przyrostowe.
ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
Ścieżka ota_from_target_files
jest skonfigurowana w $PATH
, a wynikowy plik binarny Pythona znajduje się w katalogu out/
.
ota_update.zip
jest teraz gotowy do wysłania na urządzenia testowe (wszystko jest podpisane za pomocą klucza testowego). W przypadku urządzeń użytkowników wygeneruj i używaj własnych kluczy prywatnych jako:
Szczegółowy opis znajdziesz w artykule Podpisywanie kompilacji do opublikowania.
Tworzenie przyrostowych aktualizacji
Aktualizacja przyrostowa to pakiet OTA zawierający poprawki binarne do danych, które są już na urządzeniu. Pakiety z przyrostowymi aktualizacjami są zwykle mniejsze ponieważ nie muszą zawierać niezmienionych plików. Ponadto zmienione pliki często bardzo podobne do poprzednich wersji, dlatego w pakiecie wystarczy kodowanie różnic między tymi plikami.
Pakiet aktualizacji przyrostowych możesz zainstalować tylko na urządzeniach, które mają
kompilację źródłową używaną podczas tworzenia pakietu. Aby utworzyć aktualizację przyrostową, potrzebujesz pliku target_files.zip
z poprzedniej wersji (tej, którą chcesz zaktualizować), a także pliku target_files.zip
z nowej wersji. Na przykład te polecenia używają narzędzi do publikowania, aby utworzyć aktualizację przyrostową dla urządzenia tardis
.
ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
Ta kompilacja jest bardzo podobna do poprzedniej, a aktualizacja przyrostowa
pakiet (incremental_ota_update.zip
) jest znacznie mniejszy od odpowiadającego mu
pełna aktualizacja (około 1 MB zamiast 60 MB).
Rozpowszechniaj pakiet przyrostowy tylko na urządzeniach, na których działa dokładnie ta sama poprzednia wersja, która posłużyła jako punkt wyjścia dla pakietu przyrostowego. Obrazy w katalogu PREVIOUS-tardis-target_files.zip
lub PREVIOUS-tardis-img.zip
(oba utworzone za pomocą make dist
, które mają być zapisane za pomocą fastboot update
) muszą być zapisane w pamięci flash, a nie obrazy z katalogu PRODUCT_OUT
(utworzone za pomocą make
, które mają być zapisane w pamięci flash za pomocą fastboot flashall
). Próba zainstalowania pakietu przyrostowego na urządzeniu z inną wersją skompilowaną spowoduje błąd instalacji. Jeśli instalacja się nie powiedzie, urządzenie pozostanie w tym samym stanie (z uruchomionym starym systemem). Pakiet weryfikuje poprzedni stan wszystkich plików, które aktualizuje, zanim je dotknie, dzięki czemu urządzenie nie zostanie w połowie zaktualizowane.
Aby zapewnić użytkownikom jak najlepsze wrażenia, oferuj pełną aktualizację co 3–4 aktualizacje. Dzięki temu użytkownicy będą mogli zapoznać się z najnowszą wersją i uniknąć sekwencji instalacji przyrostowych aktualizacji.
Tworzenie pakietów OTA dla wielu kodów SKU
Android 11 lub nowszy obsługuje używanie pojedynczej funkcji OTA Pakiet dla wielu urządzeń z różnymi kodami SKU. W tym celu musisz skonfigurować urządzenia docelowe tak, aby używały dynamicznych odcisków palców, i zaktualizować metadane OTA (za pomocą narzędzi OTA), aby uwzględnić nazwę urządzenia i odcisk palca w warunkach wstępnych i końcowych.
Informacje o kodach SKU
Format kodu SKU to odmiana połączonej kompilacji
i wartości parametru,
jest zwykle niezadeklarowanym podzbiorem bieżących parametrów build_fingerprint
.
OEM może używać dowolnej kombinacji parametrów kompilacji zatwierdzonych przez CDD dla kodu SKU,
za pomocą jednego zdjęcia dla tych kodów SKU. Na przykład ten kod SKU ma kilka wersji:
SKU = <product><device><modifierA><modifierB><modifierC>
modifierA
to poziom urządzenia (np. Pro, Premium lub Plus).modifierB
to wariant sprzętu (np. radio).modifierC
to region, który może być ogólny (np. NA, EMEA lub CHN) lub specyficzny dla kraju lub języka (np. JPN, ENG lub CHN).
Wielu producentów OEM używa jednego zdjęcia dla wielu kodów SKU, a następnie otrzymuje ostateczną wersję produktu
nazwę użytkownika i odcisk palca urządzenia podczas działania po uruchomieniu urządzenia. Upraszcza to proces tworzenia platformy, umożliwiając urządzeniom z niewielkimi modyfikacjami i różnymi nazwami produktów udostępnianie wspólnych obrazów (takich jak tardis
i tardispro
).
Używanie dynamicznych odcisków palca
Odcisk cyfrowy to zdefiniowana konkatenacja słowa build
parametry takie jak:
ro.product.brand
, ro.product.name
i ro.product.device
. Odcisk palca
urządzenia pochodzi z odcisku cyfrowego partycji systemowej i jest używany jako
unikalny identyfikator obrazów (i bajtów) uruchomionych na urządzeniu. Aby utworzyć dynamiczny odcisk palca, użyj logiki dynamicznej w pliku build.prop
urządzenia, aby uzyskać wartość zmiennych bootloadera podczas uruchamiania urządzenia, a następnie użyć tych danych do utworzenia dynamicznego odcisku palca dla tego urządzenia.
Aby na przykład używać dynamicznych odcisków palców na urządzeniach z systemem tardis
i tardispro
,
zaktualizuj te pliki, jak pokazano poniżej.
Zaktualizuj plik
odm/etc/build_std.prop
, tak aby zawierał następujący wiersz.ro.odm.product.device=tardis
Zaktualizuj plik
odm/etc/build_pro.prop
, aby zawierał ten wiersz.ro.odm.product.device=tardispro
Zaktualizuj plik
odm/etc/build.prop
, tak aby zawierał następujące wiersze.ro.odm.product.device=tardis import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
Wiersze te dynamicznie ustawiają nazwę urządzenia, odcisk palca
ro.build.fingerprint
na podstawie wartości atrybutu
Właściwość programu rozruchowego ro.boot.product.hardware.sku
(tylko do odczytu).
Aktualizacja metadanych pakietu OTA
Pakiet OTA zawiera plik metadanych (META-INF/com/android/metadata
), który opisuje pakiet, w tym jego warunki wstępne i warunki końcowe. Na przykład ten kod to plik metadanych pakietu OTA kierowanego na urządzenie tardis
.
post-build=google/tardis/tardis:11/RP1A.200521.001/6516341:userdebug/dev-keys
post-build-incremental=6516341
post-sdk-level=30
post-security-patch-level=2020-07-05
post-timestamp=1590026334
pre-build=google/tardis/tardis:11/RP1A.200519.002.A1/6515794:userdebug/dev-keys
pre-build-incremental=6515794
pre-device=tardis
Wartości pre-device
, pre-build-incremental
i pre-build
określają
określić, jakie musi mieć urządzenie, zanim będzie można zainstalować pakiet OTA.
Wartości post-build-incremental
i post-build
określają stan urządzenia
co może nastąpić po zainstalowaniu pakietu OTA. Wartości pre-
i
Pola post-
pochodzą z podanych niżej odpowiednich właściwości kompilacji.
- Wartość
pre-device
jest pobierana z właściwości kompilacjiro.product.device
. - Wartości
pre-build-incremental
ipost-build-incremental
są wyprowadzane z właściwości kompilacjiro.build.version.incremental
. - Wartości
pre-build
ipost-build
są określane na podstawie właściwości kompilacjiro.build.fingerprint
.
Na urządzeniach z Androidem 11 lub nowszym możesz używać tej funkcji:
flagę --boot_variable_file
w narzędziach OTA, aby podać ścieżkę do pliku,
zawiera wartości zmiennych środowiska wykonawczego używanych do tworzenia
dynamiczny odcisk cyfrowy. Następnie dane są używane do aktualizowania metadanych OTA w celu uwzględnienia nazwy i odcisków palców urządzenia w warunkach pre-
i post-
(z użyciem znaku ukośnika | jako separatora). Flaga --boot_variable_file
ma następującą składnię i opis.
- Składnia:
--boot_variable_file <path>
- Opis: określa ścieżkę do pliku zawierającego możliwe wartości właściwości
ro.boot.*
. Służy do obliczania możliwych odcisków palców w czasie wykonywania, gdy niektóre właściwościro.product.*
są zastąpione przez instrukcję importu. Plik wymaga 1 właściwości w każdym wierszu, w którym każdy wiersz zawiera: format:prop_name=value1,value2
.
Jeśli na przykład usługa to ro.boot.product.hardware.sku=std,pro
, metadane OTA dla urządzeń tardis
i tardispro
wyglądają tak, jak pokazano poniżej.
post-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-build=google/tardis/tardis:11/<suffix>|google/tardis/tardispro:11/<suffix>
pre-device=tardis|tardispro
Aby obsługiwać tę funkcję na urządzeniach z Androidem 10, zapoznaj się z implementacją referencyjną.
Ta lista zmian warunkowo analizuje instrukcje import
w elemencie build.prop
który umożliwia rozpoznawanie i uwzględnianie zastąpień właściwości w
ostatecznych metadanych OTA.