您可以使用 ota_from_target_files
build/make/tools/releasetools
提供的工具,以建構完整和增量
OTA 套件適用於使用 A/B 系統更新的裝置,
非 A/B 系統更新。這項工具會擷取
Android 建構系統產生的 target-files.zip
檔案做為輸入內容。
針對搭載 Android 11 以上版本的裝置,您可以 適用於具備不同 SKU 的多部裝置適用的單一 OTA 套件。要這麼做 將目標裝置設定為使用動態指紋 並更新 OTA 中繼資料,將裝置納入其中 命名條件和指紋。
Android 8.0 已淘汰的非 A/B 裝置檔案型 OTA 套件,
請改用區塊式 OTA 套件。目的地:
產生區塊式 OTA 套件或搭載 Android 7.x 以下版本的裝置,然後
對 ota_from_target_files
參數加入 --block
選項。
建構完整更新內容
「完整」更新是 OTA 套件,內含
裝置(系統、啟動與復原分區)。
接收及套用套件,套件便可安裝
無論裝置目前狀態為何例如,下列
指令會使用發布工具建立 target-files.zip
封存檔
tardis
部裝置。
. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output
make dist
會在 $OUT
中建構完整的 OTA 套件。產生的 .zip
檔案
包含為 tardis
裝置建構 OTA 套件所需的一切資訊。
您也可以將 ota_from_target_files
建構為 Python 二進位檔,並呼叫
並建構完整或漸進式套件
ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
ota_from_target_files
路徑會在 $PATH
中設定,而產生的 Python
位於 out/
目錄。
現在可以將「ota_update.zip
」傳送給測試裝置 (所有已簽署項目)
測試金鑰)。如果是使用者裝置,請產生並使用自己的私密金鑰,
,詳情請參閱「簽署要發布的版本」。
建構漸進式更新
「漸進式」更新是 OTA 套件,包含資料的二進位修補程式 。採用漸進式更新的套件通常較小 因為這類不需要納入未變更的檔案另外,變更的檔案 與先前版本非常相似,套件只需要包含 兩個檔案間的差異編碼。
您只能在符合下列條件的裝置上安裝漸進式更新套件:
建構套件時使用的原始碼建構作業如要建構漸進式更新
您需要上一個版本 (所要的) 的 target_files.zip
檔案
更新 from) 及從新建構的 target_files.zip
檔案。適用對象
舉例來說,下列指令會使用發布工具來建立漸進式更新
都對 tardis
裝置至關重要
ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
這個版本與先前版本非常類似
套件 (incremental_ota_update.zip
) 遠小於
完整更新 (約 1 MB,而非 60 MB)。
只對執行完全相同的裝置發布漸進式套件
做為漸進式套件的起點你必須刷
PREVIOUS-tardis-target_files.zip
或 PREVIOUS-tardis-img.zip
中的圖片
(皆使用 make dist
建構,使用 fastboot update
刷新)
PRODUCT_OUT
目錄中的目錄 (使用 make
建構的,
已透過 fastboot flashall
刷新)。正在嘗試安裝漸進式套件
會導致安裝錯誤發生。當
安裝失敗,裝置仍會處於相同的工作狀態 (執行舊版
系統);套件會驗證其更新所有檔案的先前狀態
再接觸,因此裝置不會處於半升級狀態。
為提供最佳使用者體驗,建議每 3 到 4 次更新一次 更新。這種做法可讓使用者掌握最新版本的內容,避免長時間使用 安裝增量更新。
為多個 SKU 建構 OTA 套件
Android 11 以上版本支援使用單一 OTA 連線 適用於具備不同 SKU 的多部裝置。為此,您需要設定 讓目標裝置使用動態指紋並更新 OTA 中繼資料 (使用 OTA 工具) 將裝置名稱及指紋納入前後對照 條件項目。
關於 SKU
SKU 格式是合併後的建構版本
參數值和
通常是目前 build_fingerprint
參數中未宣告的子集。
原始設備製造商 (OEM) 可針對 SKU 使用任意 CDD 核准的建構參數組合
以及這些 SKU 的單一映像檔舉例來說,下列 SKU
多種變化版本:
SKU = <product><device><modifierA><modifierB><modifierC>
modifierA
是裝置層級 (例如 Pro、 Premium 或 Plus)modifierB
是硬體變化版本 (例如 電台)modifierC
是區域,可能為一般區域 (例如北美洲、歐洲、中東和非洲地區或中華電信),或是國家/地區或語言特定 (例如 JPN、 英文或 CHN)
許多原始設備製造商 (OEM) 會針對多個 SKU 使用同一張圖片,然後衍生出最終成品
名稱和裝置指紋。這項程序
簡化平台開發程序,讓裝置能夠
客製化圖片,但使用不同的產品名稱,藉此分享共同圖片 (例如
tardis
和 tardispro
)。
使用動態指紋
指紋是「建構」的已定義串連
參數
ro.product.brand
、ro.product.name
和ro.product.device
。指紋
的裝置來自系統分區指紋,並會做為
裝置上所執行圖片 (和位元組) 的專屬識別碼。如要建立
動態指紋,使用裝置 build.prop
檔案中的動態邏輯進行以下作業:
取得系統啟動載入程式變數的值,然後使用該資料
建立該裝置的動態指紋
舉例來說,如要為 tardis
和 tardispro
裝置使用動態指紋,
請更新下列檔案,如下所示。
更新
odm/etc/build_std.prop
檔案,加入下列內容。ro.odm.product.device=tardis
更新
odm/etc/build_pro.prop
檔案,加入下列內容。ro.odm.product.device=tardispro
更新
odm/etc/build.prop
檔案,加入下列幾行內容。ro.odm.product.device=tardis import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
這幾行程式碼會動態設定裝置名稱、指紋和
ro.build.fingerprint
值
ro.boot.product.hardware.sku
系統啟動載入程式屬性 (唯讀)。
更新 OTA 套件中繼資料
OTA 套件內含中繼資料檔案 (META-INF/com/android/metadata
),
說明套件,包括 OTA 的先決條件和事後條件
套件。舉例來說,以下程式碼是 OTA 套件的中繼資料檔案
指定 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
pre-device
、pre-build-incremental
和 pre-build
值會定義
您必須先安裝 OTA 套件才能安裝 OTA 套件。
post-build-incremental
和 post-build
值會定義裝置目前的狀態
安裝 OTA 套件後安裝的產品。pre-
和
post-
欄位衍生自下列對應的建構屬性。
pre-device
值衍生自ro.product.device
建構屬性。pre-build-incremental
和post-build-incremental
值是衍生結果 來自ro.build.version.incremental
建構屬性。pre-build
和post-build
值衍生自ro.build.fingerprint
建構屬性。
在搭載 Android 11 以上版本的裝置上,您可以使用
OTA 工具中的 --boot_variable_file
旗標,指定該檔案的路徑
包含建立裝置的
動態指紋該資料會用來更新 OTA 中繼資料,將
pre-
和 post-
條件中的裝置名稱和指紋 (使用
直立線字元 |分隔)。--boot_variable_file
旗標具有
遵循的語法和說明
- 語法:
--boot_variable_file <path>
- Description: 指定檔案路徑,其中包含可能的值
ro.boot.*
屬性。用於計算可能的執行階段指紋 某些ro.product.*
屬性遭到匯入陳述式覆寫。 檔案中每一行一個屬性應該包含下列屬性 格式:prop_name=value1,value2
。
例如,當屬性是 ro.boot.product.hardware.sku=std,pro
時,
以下為 tardis
和 tardispro
裝置的 OTA 中繼資料。
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
如要在搭載 Android 10 的裝置上支援這項功能,請參閱參考資料
。
這個變更清單有條件地剖析 build.prop
中的 import
陳述式
檔案,以便系統辨識屬性覆寫並反映在
最終的 OTA 中繼資料