Kullanıcılar telefonlarına bağımlıdır ve her zaman çalışan bir cihaza ihtiyaç duyarlar. Ancak bazen cihazlar yeniden başlatma döngülerine girer. Bu durum, kullanıcıların destek kaydı oluşturmasına veya garantiyle ilgili sorular sormasına neden olur. Bu işlem, kullanıcılar için sinir bozucu, cihaz üreticileri ve operatörler için ise maliyetlidir.
Android 8.0 (API düzeyi 26) ve sonraki sürümlerde, temel sistem bileşenlerinin kilitlenme döngülerinde takılı kaldığını algıladığında kurtarma sürecini tetikleyen bir özellik bulunur. Bu sinyal alındığında, Kurtarma Partisi özelliği, 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 işlemi yapmasını ister.
Uygulama
Kurtarma Partisi varsayılan olarak etkindir ve uygulama /services/core/java/com/android/server/RescueParty.java konumunda bulunur. Kurtarma Partisi, başlatma ve kilitlenme etkinlikleri hakkında bilgi alır ve şu durumlarda başlatılır:
system_server, beş dakika içinde beş kereden fazla yeniden başlatılıyor.- Kalıcı bir sistem uygulaması 30 saniye içinde beşten fazla kez kilitleniyor.
Kurtarma Partisi bu durumlardan birini algıladığında bir sonraki kurtarma seviyesine yükselir, bu seviyeyle ilişkili görevi işler ve cihazın kurtarılıp kurtarılmadığını görmek için devam etmesine izin verir. Her seviyede temizlenen veya sıfırlanan öğeler giderek daha kapsamlı hale gelir. Son seviyede kullanıcıdan cihazı fabrika ayarlarına sıfırlaması istenir.
Kurtarma Partisi için özel donanım desteği gerekmez. Uygulanırsa bir cihazın kurtarma sistemi --prompt_and_wipe_data komutuna yanıt vermelidir ve cihazlar, devam etmeden önce kullanıcı verilerinin yok edilmesini onaylamaları için kullanıcılara bir yol 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ışır duruma gelmesinden önce beş dakikaya kadar süre ekleyebileceğinden cihaz üreticileri özel kurtarma düzeyleri eklememelidir. Çalışmayan bir cihazla geçirilen sürenin artması, kullanıcıların cihazlarını kendi başlarına kurtarmak yerine destek veya garanti sorgusu başlatma olasılığını artırır.
Doğrulama
Rescue Party, cihazda etkin bir USB veri bağlantısı olduğunda tüm kurtarma etkinliklerini bastırır. Bunun nedeni, bu durumun cihazda hata ayıklama işlemi yapıldığına dair güçlü bir sinyal olmasıdır.
Bu bastırmayı geçersiz kılmak için şu komutu çalıştırın:
adb shell setprop persist.sys.enable_rescue 1Buradan bir sistem veya kullanıcı arayüzü kilitlenme döngüsünü tetikleyin:
Düşük seviyeli bir
system_serverkilitlenme döngüsünü tetiklemek için şu komutu çalıştırın:adb shell setprop debug.crash_system 1adb shell stopadb shell startOrta düzeyde bir SystemUI kilitlenme döngüsünü tetiklemek için şu komutu çalıştırın:
adb shell setprop debug.crash_sysui 1
Her iki kilitlenme döngüsü de kurtarma mantığını başlatır. Rescue Party, tüm kurtarma işlemlerini daha sonra inceleme ve hata ayıklama için /data/system/uiderrors.txt konumunda depolanan kalıcı PackageManager günlüklerine de kaydeder. Hata raporları, Paket uyarı mesajları bölümünde bu kalıcı günlükleri de içerir.