Android Uyumluluk Tanımlama Belgesi (CDD) Güncellenebilir Yazılım, cihazların SystemUpdatePolicy
sınıfını uygulamasını zorunlu kılar. SystemUpdatePolicy
, varsa cihaz sahibi (DO) uygulamasının sistem güncellemelerinin yüklenmesini kontrol etmesine olanak tanır.
Cihaz sahiplerini bilgilendirme
Kablosuz (OTA) istemcisi, sistem API'sini kullanarak cihaz sahibi uygulamalarını gelen OTA güncellemeleri hakkında bilgilendirmelidir. OTA istemcisi, OTA güncellemesi ilk kez kullanıma sunulduğunda zaman damgası kaydı da içermelidir. OTA istemcileri, cihaz sahibi uygulamaları bilgilendirmek için DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
işlevini çağırabilir. OTA istemcisi, bir güncellemenin güvenlik yaması olup olmadığını bilmiyorsa DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
değerini kullanabilir.
Şu anda kullanılabilir bir güncelleme yoksa OTA istemcisi, updateReceivedTime
bağımsız değişkenini -1
olarak ayarlayarak bu durumu bildirir.
OTA istemcisi OTA sunucusunu her sorguladığında veya istemciye bir OTA aktarıldığında bildirim göndermenizi öneririz. Ayrıca daha sık bildirim gönderebilirsiniz.
Sistem güncelleme politikası
Android 9, OTA güncellemelerini 90 güne kadar ertelemelerine olanak tanıyarak cihaz sahiplerinin güncellemeleri kontrol etme olanağını iyileştirir. Özel cihaz (eski adıyla COSU) çözümlerine odaklanan bu özellik, sahiplerinin tatiller gibi kritik dönemlerde cihazlarda çalışan işletim sistemi sürümünü duraklatmasına olanak tanır.
OTA istemcisi, CDD'ye uymak için davranış politikaları uygulamalıdır. DO, cihaz sistem güncelleme alt sistemlerinin uyması gereken aşağıdaki politikaları ayarlayabilir:
Cihaz sahipleri, tatiller veya yoğun dönemler gibi kritik dönemlerde işletim sistemi sürümünü donduracak dondurma dönemleri de belirleyebilir (Android 9 veya sonraki sürümlerde). Sistem, donma süresi boyunca OTA güncellemelerini yüklemez. SystemUpdatePolicy.InstallationOption
kullanmanızı öneririz (aşağıdaki bölüme bakın). Ancak OTA istemcisi, cihazın dondurma döneminde olup olmadığını kontrol etmek için SystemUpdatePolicy.getFreezePeriods()
işlevini de çağırabilir.
Yükleme seçeneklerini uygulama
Android 9, sistem güncelleme istemcileri için tasarlanmış bir @SystemApi, SystemUpdatePolicy.InstallationOption
kullanıma sunar.
SystemUpdatePolicy.InstallationOption
, politikalar ve dondurma dönemleri için sarmalayıcı sınıf görevi görür. Yükleme seçeneği, istemcilere mevcut sistem güncelleme politikası veya ayarlanabilecek herhangi bir dondurma dönemi göz önüne alındığında, gelen sistem güncellemeleriyle ilgili olarak nasıl işlem yapmaları gerektiğini ve bu işlemin ne kadar süre boyunca geçerli olacağını bildirir. Yükleme seçenekleri aşağıdakilerden biri olabilir:
-
TYPE_INSTALL_AUTOMATIC
: Gelen sistem güncellemeleri, kullanıma sunulduğu anda hemen ve kullanıcı müdahalesi olmadan yüklenir. Cihaz otomatik olarak yeniden başlatılır. -
TYPE_POSTPONE
: Gelen sistem güncellemeleri en fazla 30 gün geciktirilebilir. Kullanıcılar güncellemeleri manuel olarak yükleyemez. Cihaz üreticileri, güvenlik yamalarını engelleyip engellememeyi seçebilir. -
TYPE_PAUSE
: Gelen sistem güncellemeleri, ikinci bir bildirime kadar süresiz olarak gecikebilir. Kullanıcılar güncellemeleri manuel olarak yükleyemez.TYPE_PAUSE
, güvenlik yamaları dahil tüm güncellemeleri geciktirir.
Sistem güncelleme istemcileri, SystemUpdatePolicy.getInstallationOptionAt(long when)
kullanarak SystemUpdatePolicy.InstallationOption
sorgulayabilir. Bu durumda when, yükleme seçeneğinin sorgulandığı zamanı epoch'tan beri geçen milisaniye sayısı olarak temsil eder. Sistem güncelleme istemcileri, SystemUpdatePolicy.getInstallationOptionAt(long when)
yöntemini kullanarak geçerli zaman dolana kadar döndürülen seçenekle ilgili işlem yapabilir. Döndürülen seçenek geçerliliğini yitirdikten sonra istemci, en son seçenek için yeni bir zaman damgası kullanarak başka bir sorgu gönderebilir.
Sistem güncelleme istemcisi, politikanın tamamının güncellenmesi ihtimaline karşı DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
yayınlarını dinlemelidir.
TYPE_PAUSE politikasını doğrulama
TYPE_PAUSE
seçeneğinin OTA sisteminde çalıştığını manuel olarak doğrulayabilirsiniz.
TYPE_PAUSE politikası yürürlükte
Bir TYPE_PAUSE
politikasının çalıştığını doğrulamak için:
-
Otomatik bir politika ayarlayın ve
TYPE_PAUSE
değerini belirtin. - Sistem saati duraklatma dönemindeyken bir OTA güncellemesi gönderin.
- Cihazın OTA güncellemesini almadığını ve kullanıcının güncellemeyi manuel olarak yükleyemediğini doğrulayın.
- Cihaz A/B cihazıysa cihazı yeniden başlatın ve yeniden başlatmanın güncellemenin otomatik olarak yüklenmesini tetiklemediğini doğrulayın.
TYPE_PAUSE politikasının süresi doldu
Süresi dolmuş bir TYPE_PAUSE
politikasının çalıştığını doğrulamak için:
-
Otomatik bir politika ayarlayın ve
TYPE_PAUSE
değerini belirtin. - Sistem saati duraklatma dönemindeyken OTA güncellemesi gönderin.
- Duraklatma süresinin sona ermesini bekleyin.
- Cihazın otomatik olarak yeniden başlatıldığını ve yeniden başlatma işleminden sonra OTA güncellemesinin alındığını doğrulayın.