הטמעת רישום ספקים ברמת ההיקף

ב-Android 11 נוסף HAL חדש, ‏ IDumpstateDevice (גרסה 1.1). שכבת ה-HAL הזו חושפת שיטות חדשות לצמצום ההיקף של יומני ספקים שנכללים בדוחות באגים רגילים, וגם מאפשרת לבניית משתמשים להפעיל ולהשבית את הרישום ביומן של ספקים (ברירת המחדל לבניית משתמשים היא השבתה). כך יצרני ציוד מקורי מקבלים יותר שליטה על מה שנכלל בסוגים מסוימים של דוחות על באגים.

התכונה הזו משפיעה על יצרני ציוד מקורי (OEM) אם הם בוחרים להטמיע את HAL האופציונלי הזה. יכול להיות שתהיה השפעה על מערכות על שבב (SoC), בהתאם למה שיצרן הציוד המקורי (OEM) בוחר לחשוף באמצעות HAL הזה. לא צפויה השפעה על ספקי הסלולר.

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

דוגמאות ומקור

יש הטמעה שמוגדרת כברירת מחדל של גרסה 1.0 (שהוצאה משימוש) של IDumpstateDevice, שמוצגת בה דוגמה לשימוש בספריית dumpstate util: frameworks/native/cmds/dumpstate/DumpstateUtil.h. יש גם הטמעה של Cuttlefish של HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

קוד המקור נמצא כאן:

הטמעה

כדי להטמיע את ה-HAL הזה, צריך להטמיע את ממשק ה-HAL‏ android.hardware.dumpstate@1.1::IDumpstateDevice. יש הרבה ערכים אפשריים של DumpstateMode, אבל לא סביר שכולם ייתמכו על ידי מכשיר אחד (לדוגמה, WEAR למכשירים שאין בהם Wear OS).

ההטמעה של dumpstate HAL היא אופציונלית. כל המכשירים החדשים שמופעלת בהם מערכת Android מגרסה 11 ומעלה חייבים להטמיע את IDumpstateDevice 1.1 אם הם מטמיעים את Dumpstate HAL. במכשירים שכבר הוטמעה בהם גרסה IDumpstateDevice 1.0 לפני Android 11, השדרוג לגרסה 1.1 אמור להיות פשוט יחסית, ומומלץ מאוד לבצע אותו, כי הוא מצמצם באופן משמעותי את כמות המידע הפרטי המיותר שכלול בדוחות על באגים.

התכונה הזו תלויה בשינויים ב-dumpstate, שכלולים גם ב-Android 11, ונמצאים בתיקייה frameworks/native/cmds/dumpstate.

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

התאמה אישית

המשתמש במכשיר יכול להפעיל או להשבית את הרישום ביומן של הספק באמצעות הגדרות המפתח. גם כשההגדרה מושבתת, יכול להיות שאפליקציית dumpstateBoard_1_1 עדיין תציג מידע חיוני מינימלי, בהתאם להגדרות של יצרן הציוד המקורי. אם משביתים את רישום היומן של הספק, IDumpstateDevice::dumpstateBoard מוסיף לדוח איתור הבאגים רק מידע חיוני. אם מפעילים אותו, הוא כולל כל מידע שיצרן הציוד המקורי בוחר.

אפשר לשנות את dumpstate.cpp (שמבצע קריאה לשיטות IDumpstateDevice HAL), לדוגמה, כדי להאריך את הזמן הקצוב לתפוגה שמוגדר ל-dumpstateBoard. עם זאת, הלוגיקה הבסיסית של dumpstate.cpp צריכה להישאר ללא שינוי.

ערכי הזמן הקצוב לתפוגה יכולים להיות כל ערך, אבל הם לא צריכים להגדיל באופן משמעותי את הזמן שנדרש להשלמת דוח על באג. בפרט, הפעולה של DumpstateMode::CONNECTIVITY תלויה מאוד בזמן, והיא צריכה לפעול כמה שיותר מהר כדי לאסוף את כל היומנים הרלוונטיים של המודם, ה-Wi-Fi והרשת.

אימות

יש בדיקת VTS להטמעה של IDumpstateDevice, ויש בדיקות יחידה פונקציונליות לפונקציונליות כללית של BugreportManager.

מקרה הבדיקה הידנית המומלץ הוא frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.