Software
Updatable Android
Compatibility Definition Document (CDD)
mengharuskan perangkat menerapkan
class
SystemUpdatePolicy
. SystemUpdatePolicy
memungkinkan aplikasi pemilik perangkat (DO), jika
tersedia, mengontrol
instalasi pembaruan sistem.
Memberi tahu pemilik perangkat
Klien over the air (OTA) harus memberi tahu aplikasi pemilik perangkat tentang
pembaruan OTA yang masuk
menggunakan API sistem. Klien OTA juga harus
menyertakan rekaman stempel waktu saat update OTA pertama kali
yang tersedia. Klien OTA dapat memanggil
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
untuk memberi tahu aplikasi pemilik perangkat. Jika klien OTA tidak tahu apakah update
adalah patch keamanan, klien OTA dapat kembali menggunakan
DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Jika update saat ini tidak tersedia, klien OTA akan melaporkannya dengan
menetapkan argumen updateReceivedTime
ke -1
.
Sebaiknya kirim notifikasi setiap kali klien OTA melakukan polling terhadap
server OTA, atau saat OTA dikirim ke klien. Anda juga dapat mengirim
notifikasi lebih sering.
Kebijakan update sistem
Android 9 meningkatkan kemampuan pemilik perangkat untuk mengontrol update dengan mengizinkan pemilik perangkat menunda update OTA hingga 90 hari. Dengan berfokus pada solusi perangkat khusus (sebelumnya disebut COSU), fitur ini memungkinkan pemilik menjeda versi OS yang berjalan di perangkat selama periode kritis, seperti hari libur.
Untuk mematuhi CDD, klien OTA harus mengimplementasikan kebijakan izin yang relevan. DO dapat menetapkan kebijakan berikut, yang harus dipatuhi oleh subsistem update sistem perangkat:
Pemilik perangkat juga dapat
kumpulan
periode pembekuan (di Android 9 atau yang lebih baru) yang membekukan versi OS
selama periode kritis, seperti hari libur atau waktu sibuk lainnya. Sistem
tidak menginstal pembaruan
OTA selama masa pembekuan. Sebaiknya gunakan
SystemUpdatePolicy.InstallationOption
(lihat
bagian berikut), namun klien OTA juga dapat memanggil
SystemUpdatePolicy.getFreezePeriods()
untuk memeriksa apakah perangkat dalam masa pembekuan.
Mengimplementasikan opsi penginstalan
Android 9 memperkenalkan @SystemApi,
SystemUpdatePolicy.InstallationOption
, yang dirancang
untuk klien update sistem.
SystemUpdatePolicy.InstallationOption
berfungsi sebagai wrapper
untuk kebijakan dan periode pembekuan. Opsi penginstalan memberi tahu
klien cara menangani update sistem yang masuk dan berapa lama tindakan
tersebut berlaku, mengingat kebijakan update sistem saat ini atau periode pembekuan
yang mungkin ditetapkan. Opsi penginstalan dapat berupa salah satu
berikut ini:
-
TYPE_INSTALL_AUTOMATIC
- Update sistem yang masuk akan segera diinstal dan tanpa intervensi pengguna segera setelah tersedia. Perangkat dimulai ulang secara otomatis. -
TYPE_POSTPONE
- Update sistem yang masuk dapat ditunda selama maksimum 30 hari. Pengguna tidak dapat menginstal update secara manual. Produsen perangkat dapat memilih apakah akan memblokir keamanan atau tidak patching. -
TYPE_PAUSE
- Update sistem yang masuk dapat tertunda tanpa batas waktu hingga pemberitahuan lebih lanjut. Pengguna tidak dapat menginstal update secara manualTYPE_PAUSE
menunda semua update, termasuk patch keamanan.
Klien update sistem dapat mengkueri
SystemUpdatePolicy.InstallationOption
menggunakan
SystemUpdatePolicy.getInstallationOptionAt(long when)
,
dengan when mewakili waktu opsi penginstalan
dikueri dalam jumlah milidetik sejak Epoch. Dengan menggunakan
metode
SystemUpdatePolicy.getInstallationOptionAt(long when)
, klien update sistem dapat bertindak berdasarkan opsi yang ditampilkan hingga
waktu yang efektif berlalu. Setelah opsi yang ditampilkan berakhir, klien dapat membuat kueri lain, menggunakan stempel waktu baru, untuk opsi terbaru.
Klien update sistem harus memproses
siaran DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
jika seluruh kebijakan diperbarui.
Memvalidasi kebijakan TYPE_PAUSE
Anda dapat secara manual memvalidasi opsi TYPE_PAUSE
yang berfungsi
di sistem OTA.
Kebijakan TYPE_PAUSE berlaku
Untuk memvalidasi bahwa kebijakan TYPE_PAUSE
berfungsi:
-
Setel kebijakan otomatis dan tentukan
TYPE_PAUSE
. - Saat jam sistem berada dalam periode jeda, kirim update OTA.
- Pastikan perangkat tidak menerima update OTA dan pengguna tidak dapat menginstal update secara manual.
- Jika perangkat adalah perangkat A/B, mulai ulang perangkat dan verifikasi memulai ulang tidak memicu penginstalan otomatis update.
Masa berlaku kebijakan TYPE_PAUSE telah berakhir
Untuk memvalidasi bahwa kebijakan TYPE_PAUSE
yang sudah tidak berlaku berfungsi:
-
Setel kebijakan otomatis dan tentukan
TYPE_PAUSE
. - Saat jam sistem berada dalam periode jeda, kirim update OTA.
- Tunggu hingga masa jeda berakhir.
- Pastikan perangkat dimulai ulang secara otomatis dan update OTA dilakukan setelah dimulai ulang.