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

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

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

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

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

יש הטמעה שמוגדרת כברירת מחדל של הגרסה 1.0 (הוצאה משימוש) של IDumpstateDevice, שמציגה דוגמה לשימוש בספריית ה-util של dumpstate:‏ 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).

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

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

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

התאמה אישית

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

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

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

אימות

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

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