מסיבת הצלה

הרבה משתמשים מסתמכים בעיקר על הטלפונים שלהם וצריכים מכשיר פעיל בכלל. בזמן האימון. עם זאת, לפעמים מכשירים מגיעים ללולאות הפעלה מחדש, שגורמות למשתמשים להגיש כרטיסי תמיכה או בירורים לגבי האחריות. התהליך הזה מתסכל למשתמש ויקר עבור יצרני מכשירים וספקים של מכשירים.

Android 8.0 כולל תכונה ששולחת 'מסיבת הצלה' כשמזוהה רכיבי מערכת ליבה שנתקעים בלולאות קריסה. מסיבת ההצלה מועברת לטיפול ברמה גבוהה יותר עד סדרת פעולות לשחזור המכשיר. כמוצא אחרון, מסיבת ההצלה המכשיר מופעל מחדש למצב התאוששות ומבקש מהמשתמש לבצע לאתחל.

ל-Android אין צורך בתכונות ההצלה האלה מסמך הגדרת תאימות, אבל עדיין יכול להיות שימושי כדי להקטין את מספר בקשות התמיכה.

הטמעה

קבוצת ההצלה מופעלת כברירת מחדל ב-Android 8.0, וההטמעה מתבצעת /services/core/java/com/android/server/RescueParty.java צד ההצלה מקבל מידע על אירועי הפעלה ותאונה ומתחיל אם:

  • ה-system_server מופעל מחדש יותר מ-5 פעמים בתוך 5 דקות.
  • אפליקציית מערכת מתמידה קורסת יותר מ-5 פעמים ב-30 שניות.

כשמזוהה אחד מהמצבים האלה, הצוות של 'הצלה' מועבר לטיפול ברמה הבאה שחזור המשימה, מעבד את המשימה שמשויכת לרמה הזו ומאפשר למכשיר כדאי להמשיך כדי לבדוק אם הוא שחזור. כל רמה אגרסיבית יותר בהדרגה מה שהוא מנקה או מאפס. ברמה הסופית נבקש מהמשתמש לאפס את המכשיר להגדרות המקוריות במכשיר.

לא נדרשת תמיכת חומרה מיוחדת כדי לתמוך ב-Rescue Party (צד ההצלה). אם היא מוטמעת, מערכת השחזור של המכשיר חייבת להגיב הפקודה --prompt_and_wipe_data והמכשירים חייבים להציע למשתמשים דרך לאשר מחיקה של נתוני המשתמש לפני בתהליך. מערכת השחזור צריכה גם לתת למשתמש אפשרות מנסה לאתחל שוב את המכשיר.

כי כל רמת שחזור יכולה להימשך עד 5 דקות לפני שניתן יהיה להפעיל את המכשיר שוב, יצרני מכשירים לא אמורים להוסיף רמות הצלה בהתאמה אישית. יותר זמן עם מכשיר שלא פועל, יש סבירות גבוהה יותר שהמשתמשים יפנו לקבלת תמיכה לברר לגבי האחריות במקום לשחזור עצמי של המכשיר.

אימות

כל אירועי ההצלה מושבתים כשלמכשיר יש נתוני USB פעילים בחיבור כי זה סימן חזק שמישהו מנפה באגים במכשיר.

כדי לבטל את ההחרגה הזו, מריצים:

adb shell setprop persist.sys.enable_rescue 1

משם תוכלו להפעיל לולאת קריסה של המערכת או של ממשק המשתמש.

כדי להפעיל לולאת קריסה ברמה נמוכה של system_server, צריך להריץ את הפקודה:

adb shell setprop debug.crash_system 1

כדי להפעיל לולאת קריסה ברמת ה-SystemUI ברמה בינונית, מריצים את:

adb shell setprop debug.crash_sysui 1

שתי לולאות הקריסה מתחילות את לוגיקת ההצלה. גם כל פעולות ההצלה מחובר ליומני PackageManager הקבועים המאוחסנים ב- /data/system/uiderrors.txt לבדיקה ולניפוי באגים במועד מאוחר יותר. היומנים הקבועים האלה גם נכללים בכל דוח על באג תחת Package הודעות אזהרה" .