Update OTA perusahaan

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 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.

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:

  1. Setel 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 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:

  1. Setel 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 dimulai ulang secara otomatis dan update OTA dilakukan setelah dimulai ulang.