Anda dapat menggunakan ota_from_target_files
yang disediakan di build/make/tools/releasetools
untuk membuat build penuh dan inkremental
Paket OTA untuk perangkat yang menggunakan update sistem A/B atau
update sistem non-A/B. Alat ini mengambil
File target-files.zip
yang dihasilkan oleh sistem build Android sebagai input.
Untuk perangkat yang menjalankan Android 11 atau yang lebih baru, Anda dapat membangun satu paket OTA untuk beberapa perangkat dengan SKU yang berbeda. Melakukan hal ini memerlukan mengonfigurasi perangkat target untuk menggunakan sidik jari dinamis dan memperbarui metadata OTA untuk menyertakan perangkat dan sidik jari dalam entri pra- dan pascakondisi.
Android 8.0 menghentikan paket OTA berbasis file untuk perangkat non-A/B, sehingga harus
sebagai gantinya, gunakan paket OTA berbasis blok. Kepada
membuat paket OTA berbasis blok atau perangkat yang menjalankan Android 7.x atau lebih rendah, teruskan
opsi --block
ke parameter ota_from_target_files
.
Membuat update lengkap
Update lengkap adalah paket OTA yang berisi seluruh status akhir
(partisi sistem, booting, dan pemulihan). Selama perangkat dapat
menerima dan menerapkan paket, paket tersebut
dapat menginstal paket
terlepas dari status perangkat saat ini. Misalnya,
menggunakan alat rilis guna membuat arsip target-files.zip
untuk
tardis
perangkat.
. build/envsetup.sh && lunch tardis-eng
mkdir dist_output
make dist DIST_DIR=dist_output
make dist
membangun paket OTA lengkap (di $OUT
). File .zip
yang dihasilkan
berisi semua yang diperlukan untuk membuat paket OTA bagi perangkat tardis
.
Anda juga dapat membangun ota_from_target_files
sebagai biner python dan memanggilnya ke
membuat paket lengkap atau inkremental.
ota_from_target_files dist_output/tardis-target_files.zip ota_update.zip
Jalur ota_from_target_files
disiapkan di $PATH
, dan python yang dihasilkan
biner ini terletak di direktori out/
.
ota_update.zip
kini siap dikirim ke perangkat pengujian (semuanya ditandatangani
dengan kunci uji). Untuk perangkat pengguna, buat dan gunakan kunci pribadi Anda sebagai
yang dijelaskan dalam Menandatangani build untuk rilis.
Membuat update inkremental
Update inkremental adalah paket OTA yang berisi patch biner ke data yang sudah ada di perangkat. Paket dengan update inkremental biasanya lebih kecil karena tidak perlu menyertakan file yang tidak diubah. Selain itu, saat file yang diubah sering kali sangat mirip dengan versi sebelumnya, paket tersebut hanya perlu menyertakan pengkodean perbedaan antara kedua file.
Anda dapat menginstal paket pembaruan inkremental hanya
di perangkat yang memiliki
build sumber yang digunakan
dalam menyusun paket. Untuk membangun
pembaruan bertahap,
Anda memerlukan file target_files.zip
dari build sebelumnya (file yang Anda inginkan
untuk mengupdate dari) serta file target_files.zip
dari build baru. Sebagai
contohnya, perintah berikut menggunakan alat rilis untuk membangun update inkremental
untuk perangkat tardis
.
ota_from_target_files -i PREVIOUS-tardis-target_files.zip dist_output/tardis-target_files.zip incremental_ota_update.zip
Build ini sangat mirip dengan build sebelumnya, dan update inkremental
paket (incremental_ota_update.zip
) jauh lebih kecil dari yang sesuai
pembaruan penuh (sekitar 1 MB, bukan 60 MB).
Distribusikan paket inkremental hanya ke perangkat yang berjalan sama persis
versi sebelumnya yang digunakan sebagai titik awal paket inkremental. Anda harus mem-flash
gambar dalam PREVIOUS-tardis-target_files.zip
atau PREVIOUS-tardis-img.zip
(keduanya dibangun dengan make dist
, untuk di-flash dengan fastboot update
), bukan
file yang ada di direktori PRODUCT_OUT
(dibuat dengan make
, yang akan
di-flash dengan fastboot flashall
). Mencoba menginstal paket inkremental
pada perangkat dengan beberapa versi lainnya
menyebabkan {i>error<i} instalasi. Jika
penginstalan gagal, perangkat tetap dalam status kerja yang sama (menjalankan versi lama
sistem); paket memverifikasi status sebelumnya
dari semua file yang diperbaruinya
sebelum menyentuhnya, agar perangkat tidak dalam status diupgrade setengah.
Untuk pengalaman pengguna terbaik, tawarkan update lengkap untuk setiap 3–4 update pembaruan. Hal ini membantu pengguna mengikuti rilis terbaru dan menghindari dari urutan penginstalan update inkremental.
Membangun paket OTA untuk beberapa SKU
Android 11 atau yang lebih baru mendukung penggunaan satu OTA untuk beberapa perangkat dengan SKU yang berbeda. Untuk melakukannya, Anda perlu mengonfigurasi perangkat target untuk menggunakan sidik jari dinamis dan memperbarui metadata OTA (menggunakan alat OTA) untuk menyertakan nama perangkat dan sidik jari di kolom pra- dan pasca-pengujian entri kondisi.
Tentang SKU
Format SKU adalah variasi dari kombinasi build
parameter value dan
biasanya merupakan subset yang tidak dideklarasikan dari parameter build_fingerprint
saat ini.
OEM dapat menggunakan kombinasi parameter build apa pun yang disetujui CDD untuk SKU saat
juga menggunakan satu
image untuk SKU tersebut. Misalnya, SKU berikut memiliki
beberapa variasi:
SKU = <product><device><modifierA><modifierB><modifierC>
modifierA
adalah level perangkat (seperti Pro, Premium, atau Plus)modifierB
adalah variasi hardware (seperti radio)modifierC
adalah wilayah, yang dapat berupa umum (seperti NA, EMEA, atau CHN ) atau spesifik per negara atau bahasa (seperti JPN, ENG, atau CHN)
Banyak OEM menggunakan satu gambar untuk beberapa SKU, lalu mendapatkan produk akhir
dan sidik jari perangkat saat runtime setelah perangkat dimulai. Proses ini
menyederhanakan proses pengembangan platform, memungkinkan perangkat dengan
khusus, tetapi nama produk yang berbeda untuk
memiliki gambar yang sama (seperti
tardis
dan tardispro
).
Menggunakan sidik jari dinamis
Sidik jari adalah rangkaian build yang ditentukan
parameter seperti
ro.product.brand
, ro.product.name
, dan ro.product.device
. Sidik jari
berasal dari sidik jari partisi sistem dan digunakan sebagai
ID unik gambar (dan byte) yang berjalan di perangkat. Untuk membuat
sidik jari dinamis, gunakan logika dinamis dalam file build.prop
perangkat untuk
mendapatkan nilai variabel {i>bootloader<i} pada waktu {i>booting<i} perangkat, lalu
gunakan data tersebut untuk
membuat sidik jari dinamis untuk perangkat tersebut.
Misalnya, untuk menggunakan sidik jari dinamis untuk perangkat tardis
dan tardispro
,
perbarui file berikut seperti yang ditunjukkan di bawah.
Perbarui file
odm/etc/build_std.prop
agar berisi baris berikut.ro.odm.product.device=tardis
Perbarui file
odm/etc/build_pro.prop
agar berisi baris berikut.ro.odm.product.device=tardispro
Perbarui file
odm/etc/build.prop
agar berisi baris berikut.ro.odm.product.device=tardis import /odm/etc/build_${ro.boot.product.hardware.sku}.prop
Baris ini secara dinamis menetapkan nama perangkat, sidik jari, dan
ro.build.fingerprint
nilai berdasarkan nilai
Properti bootloader ro.boot.product.hardware.sku
(yang bersifat hanya baca).
Mengupdate metadata paket OTA
Paket OTA berisi file metadata (META-INF/com/android/metadata
) yang
menjelaskan paket, termasuk prasyarat dan kondisi pos OTA
paket. Misalnya, kode berikut adalah file metadata untuk paket OTA
yang menargetkan perangkat 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
Nilai pre-device
, pre-build-incremental
, dan pre-build
menentukan
status yang harus dimiliki perangkat
sebelum paket OTA dapat diinstal. Tujuan
Nilai post-build-incremental
dan post-build
menentukan status perangkat
yang diharapkan setelah
paket OTA diinstal. Nilai pre-
dan
Kolom post-
berasal dari properti build yang sesuai berikut.
- Nilai
pre-device
berasal dari properti buildro.product.device
. - Nilai
pre-build-incremental
danpost-build-incremental
berasal dari properti buildro.build.version.incremental
. - Nilai
pre-build
danpost-build
berasal dari Properti buildro.build.fingerprint
.
Pada perangkat yang menjalankan Android 11 atau yang lebih baru, Anda dapat menggunakan
flag --boot_variable_file
di alat OTA untuk menentukan jalur ke file yang
berisi nilai variabel runtime yang digunakan dalam pembuatan atribut
sidik jari dinamis. Data ini kemudian digunakan untuk memperbarui metadata OTA agar disertakan
nama perangkat dan sidik jari dalam kondisi pre-
dan post-
(menggunakan
karakter pipa | sebagai pembatas). Flag --boot_variable_file
memiliki
sintaksis dan deskripsi berikut.
- Sintaksis:
--boot_variable_file <path>
- Deskripsi: Menentukan jalur ke file yang berisi kemungkinan nilai
ro.boot.*
properti. Digunakan untuk menghitung kemungkinan sidik jari runtime saat beberapa propertiro.product.*
diganti oleh pernyataan impor. File ini mengharapkan satu properti per baris yang setiap barisnya memiliki hal berikut format:prop_name=value1,value2
.
Misalnya, jika properti adalah ro.boot.product.hardware.sku=std,pro
,
Metadata OTA untuk perangkat tardis
dan tardispro
adalah seperti yang ditunjukkan di bawah ini.
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
Untuk mendukung fungsi ini di perangkat yang menjalankan Android 10, lihat referensi
penerapan.
Daftar perubahan ini secara bersyarat mengurai pernyataan import
di build.prop
yang memungkinkan penggantian properti dikenali dan tercermin dalam
metadata OTA final.