מכשירים שמופעלים עם Android 12 באמצעות ליבה
גרסאות עדכניות יותר מ-v5.4 נדרשות כדי לשלוח את הליבה של GKI. אז זה
לשותפים יש גישה ל-DebugFS
בגרסאות build של ניפוי באגים בזמן שהם מפתחים ב-GKI
הליבה, הגדרת הליבה CONFIG_DEBUG_FS
מופעלת ב-GKI defconfig.
אף פעם לא לטעון DebugFS
בגרסאות build של משתמשים למכשירים
ב-Android 12.
לגרסאות build של ניפוי באגים יש כיסוי בדיקות טוב יותר בהשוואה לגרסאות build של משתמשים, והן מניבות
שנבדקו לאורך מחזור הפיתוח. התוכנית הבאה מצמצמת את
את ההבדל בין שני סוגי ה-build בנוגע לגישה של DebugFS
, וגם
מספקת את היתרונות הבאים:
- מניעת האפשרות ליצירה בטעות של גרסאות build של ניפוי באגים על ידי משתמשים בהתאם ל-
DebugFS
לפונקציונליות חדשה - מוודא שכל פונקציונליות קיימת לא תקינה בגלל היעדר DebugFS כבר בשלבים המוקדמים של מחזור הפיתוח
גישות לניפוי באגים בגרסאות build של ניפוי באגים מסווגות בתור ככה:
- אתחולי קובץ של
DebugFS
במהלך אתחול המכשיר, כמו גישת כתיבה לקובץ ב-DebugFS
כדי להפעיל איסוף נתונים של ניפוי באגים. - יצירת דוח על באג: Dumpstate HAL קורא קובצי
DebugFS
כאשרDumpstateBoard()
מופעל על ידיdumpstate
. הזה הופך לחלק מדוח איתור הבאגים. - בדיקה ואימות ספציפיים למכשיר.
הטבלה הבאה מתארת איך כל אחת משלוש הקטגוריות האלה
נתמך ב-Android 12. שימו לב
המעקב רלוונטי רק לגרסאות build של ניפוי באגים, כי לא ניתן לבצע את DebugFS
טעונה בגרסאות build של משתמשים.
תרחיש לדוגמה | גרסת build של ניפוי באגים ב-Android 12 |
---|---|
אתחול חד-פעמי של קובצי DebugFS , במהלך ההפעלה.
גישה זו מתרחשת פעם אחת בלבד במהלך זמן ההפעלה.
|
פעולת Dumpstate HAL מבצעת את הפעולה הזו במהלך אתחול HAL. כדי להפעיל את אותה ההגדרה,
יטען את DebugFS בגרסאות build של ניפוי באגים לפני האתחול של ה-HAL.
האפליקציה Init תתקשר למספר umount() ב-DebugFS כאשר
המכשיר השלים את האתחול.
|
יצירת דוח באגים: קריאות Dumpstate HAL
DebugFS קבצים, שהופכים לחלק מדוח איתור הבאגים.
|
הפעולה בוצעה באמצעות קובץ Dumpstate HAL בתוך DumpstateBoard() בהפעלה באמצעות תמונת מצב
(DumpstateDevice.cpp).
כלי ה-Dumpstate (חלק מ-framework של Android) מוודא שDebugFS
נטענים במהלך ההפעלה.
|
בדיקה ואימות ספציפיים למכשיר | שורש ומעטפת של Adb. טעינה של DebugFS ממעטפת adb עם
גישה לרמה הבסיסית (root)1.
|
1כדי לטעון את DebugFS
מ-adb shell
עם
גישה לרמה הבסיסית (root), צריך להשתמש בפקודה הבאה:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
פעולות נדרשות של שותפים
על סמך השינויים האלה במדיניות של השותפים, עליהם להחיל את הכללים הבאים מכשירי Android 12:
- הגדרת כל אתחולי זמן האתחול של צומתי
DebugFS
במהלך אתחול HAL של מצב ה-Dumpstate. דוגמה לאופן שבו עושים זאת זמינה במאמר DNM: דוגמה לאתחול זמן אתחול של קובציDebugFS
. - אין הרשאה לגישה אל
DebugFS
במהלך זמן ריצה. המקרים החריגים הבאים חלות:- יצירת דוח על באג (מ-Dumpstate HAL)
- בדיקה ואימות (יש גישה ל-
adb root
ול-shell
- יש לוודא ש-DebugFS נטען קודם)
מפתחים יכולים להגדיר את הנכס הקבוע לניפוי באגים
persist.dbg.keep_debugfs_mounted
כדי ש-DebugFs
תישאר בטעינה
הפעלות מחדש ב-Userdebug ובגרסאות build של מעורבות.
בדיקות התאימות של GTS מוודאות שמערכת הקבצים DebugFS
לא
טעונה בגרסאות build של משתמשים. ההצהרות של neverallow
בנוגע ל-Sepolicy מבטיחות שבכל מכשיר
בגרסה Android 12 ואילך, אין תהליכים לא מורשים
גישה אל DebugFs
.