Birçok kullanıcı telefonlarına bağımlı olduğundan her zaman çalışan bir cihaza ihtiyaç duyar. Ancak bazen cihazlar yeniden başlatma döngülerine girer. Bu da kullanıcıların destek kaydı veya garanti talebi göndermesine neden olur. Bu süreç kullanıcılar için can sıkıcı, cihaz üreticileri ve operatörler için ise pahalıdır.
Android 8.0, temel sistem bileşenlerinin kilitlenme döngülerinde takıldığını fark ettiğinde bir "kurtarma ekibi" gönderen bir özellik içerir. Kurtarma Ekibi, cihazı kurtarmak için bir dizi işlem gerçekleştirir. Son çare olarak Rescue Party, cihazı kurtarma modunda yeniden başlatır ve kullanıcıdan fabrika ayarlarına sıfırlama yapmasını ister.
Bu kurtarma özellikleri Android Uyumluluk Tanımlama Belgesi tarafından zorunlu tutulmasa da destek kayıtlarının sayısını azaltmak için faydalı olabilir.
Uygulama
Kurtarma Partisi, Android 8.0'de varsayılan olarak etkindir ve uygulama /services/core/java/com/android/server/RescueParty.java
'te bulunur.
Kurtarma Partisi, önyükleme ve kilitlenme etkinlikleri hakkında bilgi alır ve aşağıdaki durumlarda başlar:
- system_server, 5 dakika içinde 5'ten fazla kez yeniden başlatılır.
- Kalıcı bir sistem uygulaması 30 saniye içinde 5'ten fazla kez kilitleniyor.
Bu durumlardan biri algılandığında Rescue Party bir sonraki kurtarma düzeyine geçer, bu düzeyle ilişkili görevi işler ve cihazın iyileşip iyileşmediğini görmek için devam etmesine izin verir. Her seviye, temizlediği veya sıfırladığı öğelerde giderek daha agresiftir. Son düzeyde, kullanıcıdan cihazı fabrika ayarlarına sıfırlaması istenir.
Kurtarma Partisi'ni desteklemek için özel donanım desteği gerekmez. Uygulanırsa cihazın kurtarma sistemi --prompt_and_wipe_data
komutuna yanıt vermelidir ve cihazlar, kullanıcıların devam etmeden önce kullanıcı verilerinin imha edildiğini onaylayabilecekleri bir yöntem sunmalıdır. Kurtarma sistemi, kullanıcıya cihazını tekrar başlatmayı deneme seçeneği de sunmalıdır.
Her kurtarma düzeyi, cihazın tekrar çalışabilmesi için 5 dakikaya kadar ek süre gerektirebileceğinden cihaz üreticileri özel kurtarma düzeyleri eklememelidir. Kullanılamaz durumdaki cihazların kullanıcıların elinde daha uzun süre kalması, cihazlarını kendileri kurtarmak yerine destek veya garanti talebinde bulunma olasılıklarını artırır.
Doğrulama
Cihazın etkin bir USB veri bağlantısı varsa tüm kurtarma etkinlikleri engellenir. Bu, cihazda hata ayıklama işleminin yapıldığına dair güçlü bir sinyaldir.
Bu engellemeyi geçersiz kılmak için şu komutu çalıştırın:
adb shell setprop persist.sys.enable_rescue 1
Buradan bir sistem veya kullanıcı arayüzü kilitlenme döngüsü tetikleyebilirsiniz.
Düşük seviyeli bir system_server
kilitlenme döngüsünü tetiklemek için şu komutu çalıştırın:
adb shell setprop debug.crash_system 1
Orta düzey bir SystemUI kilitlenme döngüsü tetiklemek için:
adb shell setprop debug.crash_sysui 1
Her iki kilitlenme döngüsü de kurtarma mantığını başlatır. Tüm kurtarma işlemleri, daha sonra incelenmek ve hata ayıklamak için /data/system/uiderrors.txt
adresinde depolanan kalıcı PackageManager günlüklerine de kaydedilir.
Bu kalıcı günlükler, her hata raporuna "Paket uyarı mesajları" bölümünde de dahil edilir.