Compatibility Definition Document (CDD) Software yang Dapat Diupdate (CDD) Android mengharuskan perangkat untuk menerapkan class SystemUpdatePolicy
. SystemUpdatePolicy
memungkinkan aplikasi pemilik perangkat (DO), jika
ada, mengontrol penginstalan update sistem.
Memberi tahu pemilik perangkat
Klien over the air (OTA) harus memberi tahu aplikasi pemilik perangkat tentang
update OTA yang masuk menggunakan API sistem. Klien OTA juga harus
menyertakan rekaman stempel waktu saat update OTA pertama kali
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 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 penting, seperti hari libur.
Untuk mematuhi CDD, klien OTA harus menerapkan kebijakan perilaku. DO dapat menetapkan kebijakan berikut, yang harus dipatuhi oleh subsistem update sistem perangkat:
Pemilik perangkat juga dapat
menetapkan
periode pembekuan (di Android 9 atau yang lebih baru) yang membekukan versi OS
selama periode penting, seperti hari libur atau waktu sibuk lainnya. Sistem
tidak menginstal update OTA selama periode pembekuan. Sebaiknya gunakan
SystemUpdatePolicy.InstallationOption
(lihat
bagian berikut), tetapi klien OTA juga dapat memanggil
SystemUpdatePolicy.getFreezePeriods()
untuk memeriksa apakah perangkat berada dalam periode pembekuan.
Mengimplementasikan opsi penginstalan
Android 9 memperkenalkan @SystemApi,
SystemUpdatePolicy.InstallationOption
, yang dirancang
untuk klien update sistem.
SystemUpdatePolicy.InstallationOption
berfungsi sebagai class wrapper untuk kebijakan dan periode pembekuan. Opsi penginstalan memberi tahu klien cara menindaklanjuti update sistem yang masuk dan berapa lama tindakan tersebut valid, dengan mempertimbangkan kebijakan update sistem saat ini atau periode pembekuan apa pun yang mungkin ditetapkan. Opsi penginstalan dapat berupa salah satu dari
opsi berikut:
-
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 untuk memblokir patch keamanan atau tidak. -
TYPE_PAUSE
- Update sistem yang masuk dapat tertunda tanpa batas hingga pemberitahuan lebih lanjut. Pengguna tidak dapat menginstal update secara manual.TYPE_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.
Validasi kebijakan TYPE_PAUSE
Anda dapat memvalidasi bahwa opsi TYPE_PAUSE
berfungsi secara manual di sistem OTA.
Kebijakan TYPE_PAUSE berlaku
Untuk memvalidasi bahwa kebijakan TYPE_PAUSE
berfungsi:
-
Tetapkan 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 pastikan bahwa mulai ulang tidak memicu penginstalan otomatis update.
Masa berlaku kebijakan TYPE_PAUSE telah berakhir
Untuk memvalidasi bahwa kebijakan TYPE_PAUSE
yang sudah tidak berlaku berfungsi:
-
Tetapkan kebijakan otomatis dan tentukan
TYPE_PAUSE
. - Saat jam sistem berada dalam periode jeda, kirim update OTA.
- Tunggu hingga masa jeda berakhir.
- Pastikan perangkat otomatis dimulai ulang dan update OTA dilakukan setelah reboot.