Perangkat Lunak yang Dapat Diperbarui Dokumen Definisi Kompatibilitas Android (CDD) memerlukan perangkat untuk mengimplementasikan kelas SystemUpdatePolicy
. SystemUpdatePolicy
memungkinkan aplikasi pemilik perangkat (DO), jika ada, 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 pembaruan OTA pertama kali tersedia. Klien OTA dapat menghubungi DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
untuk memberi tahu aplikasi pemilik perangkat. Jika klien OTA tidak mengetahui apakah pembaruan merupakan patch keamanan, klien OTA dapat kembali menggunakan DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
.
Jika pembaruan saat ini tidak tersedia, klien OTA melaporkan hal ini dengan mengatur argumen updateReceivedTime
ke -1
. Kami merekomendasikan pengiriman pemberitahuan setiap kali klien OTA melakukan polling ke server OTA, atau ketika OTA dikirim ke klien. Anda juga dapat mengirimkan notifikasi lebih sering.
Kebijakan pembaruan sistem
Android 9 meningkatkan kemampuan pemilik perangkat untuk mengontrol pembaruan dengan memungkinkan pemilik perangkat menunda pembaruan OTA hingga 90 hari. Berfokus pada solusi perangkat khusus (sebelumnya disebut COSU), fitur ini memungkinkan pemilik menjeda versi OS yang berjalan pada perangkat selama periode kritis, seperti hari libur.
Untuk mematuhi CDD, klien OTA harus menerapkan kebijakan perilaku. DO dapat menetapkan kebijakan berikut, yang harus dipatuhi oleh subsistem pembaruan sistem perangkat:
Pemilik perangkat juga dapat menyetel periode pembekuan (di Android 9 atau lebih baru) yang membekukan versi OS selama periode kritis, seperti hari libur atau waktu sibuk lainnya. Sistem tidak menginstal pembaruan OTA selama periode pembekuan. Kami merekomendasikan penggunaan SystemUpdatePolicy.InstallationOption
(lihat bagian berikut), namun klien OTA juga dapat menghubungi SystemUpdatePolicy.getFreezePeriods()
untuk memeriksa apakah perangkat berada dalam periode pembekuan.
Menerapkan opsi instalasi
Android 9 memperkenalkan @SystemApi, SystemUpdatePolicy.InstallationOption
, yang dirancang untuk klien pembaruan sistem. SystemUpdatePolicy.InstallationOption
berfungsi sebagai kelas pembungkus untuk kebijakan dan periode pembekuan. Opsi penginstalan memberi tahu klien cara bertindak terhadap pembaruan sistem yang masuk dan berapa lama tindakan tersebut berlaku, berdasarkan kebijakan pembaruan sistem saat ini atau periode pembekuan apa pun yang mungkin ditetapkan. Opsi penginstalan dapat berupa salah satu dari berikut ini:
-
TYPE_INSTALL_AUTOMATIC
- Pembaruan sistem yang masuk segera diinstal dan tanpa campur tangan pengguna segera setelah tersedia. Perangkat melakukan boot ulang secara otomatis. -
TYPE_POSTPONE
- Pembaruan sistem yang masuk dapat tertunda selama maksimal 30 hari. Pengguna tidak dapat menginstal pembaruan secara manual. Produsen perangkat dapat memilih apakah akan memblokir patch keamanan atau tidak. -
TYPE_PAUSE
- Pembaruan sistem yang masuk dapat ditunda tanpa batas waktu hingga pemberitahuan lebih lanjut. Pengguna tidak dapat menginstal pembaruan secara manual.TYPE_PAUSE
menunda semua pembaruan, termasuk patch keamanan.
Klien pembaruan sistem dapat menanyakan SystemUpdatePolicy.InstallationOption
menggunakan SystemUpdatePolicy.getInstallationOptionAt(long when )
, dengan when mewakili waktu opsi instalasi ditanyakan dalam jumlah milidetik sejak Epoch. Dengan menggunakan metode SystemUpdatePolicy.getInstallationOptionAt(long when )
, klien pembaruan sistem dapat bertindak berdasarkan opsi yang dikembalikan hingga waktu efektif habis. Setelah opsi yang dikembalikan berakhir, klien dapat membuat kueri lain, menggunakan stempel waktu baru, untuk opsi terbaru.
Klien pembaruan sistem harus mendengarkan siaran DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
jika seluruh kebijakan diperbarui.
Memvalidasi kebijakan TYPE_PAUSE
Anda dapat memvalidasi secara manual opsi TYPE_PAUSE
yang berfungsi pada sistem OTA.
Kebijakan TYPE_PAUSE
berlaku
Untuk memvalidasi kebijakan TYPE_PAUSE
berfungsi:
- Tetapkan kebijakan otomatis dan tentukan
TYPE_PAUSE
. - Saat jam sistem berada dalam periode jeda, tekan pembaruan OTA.
- Pastikan perangkat tidak menerima pembaruan OTA dan pengguna tidak dapat menginstal pembaruan secara manual.
- Jika perangkat adalah perangkat A/B, reboot perangkat dan pastikan reboot tidak memicu instalasi otomatis pembaruan.
Kebijakan TYPE_PAUSE
sudah habis masa berlakunya
Untuk memvalidasi kebijakan TYPE_PAUSE
yang kedaluwarsa berfungsi:
- Tetapkan kebijakan otomatis dan tentukan
TYPE_PAUSE
. - Saat jam sistem berada dalam periode jeda, tekan pembaruan OTA.
- Tunggu hingga jeda periode berakhir.
- Pastikan perangkat melakukan boot ulang secara otomatis dan pembaruan OTA diambil setelah reboot.