Update OTA perusahaan

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:

  1. Tetapkan kebijakan otomatis dan tentukan TYPE_PAUSE.
  2. Saat jam sistem berada dalam periode jeda, kirim update OTA.
  3. Pastikan perangkat tidak menerima update OTA dan pengguna tidak dapat menginstal update secara manual.
  4. 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:

  1. Tetapkan kebijakan otomatis dan tentukan TYPE_PAUSE.
  2. Saat jam sistem berada dalam periode jeda, kirim update OTA.
  3. Tunggu hingga masa jeda berakhir.
  4. Pastikan perangkat otomatis dimulai ulang dan update OTA dilakukan setelah reboot.