ב-Android 11 נוספה HAL חדשה, IDumpstateDevice (גרסה 1.1). ה-HAL הזה חושף שיטות חדשות להגדרת היקף מצומצם יותר של יומני ספקים שכלולים בדוחות הבאגים הרגילים, וגם מאפשר לבניינים של משתמשים להפעיל ולהשבית את הרישום ביומן של הספק (ברירת המחדל לבניינים של משתמשים היא מושבתת). כך ליצרני ציוד מקורי יש יותר שליטה על מה שנכלל בסוגים מסוימים של דוחות על באגים.
התכונה הזו משפיעה על יצרני ציוד מקורי (OEM) אם הם בוחרים להטמיע את ה-HAL האופציונלי הזה. יכול להיות שה-SoC יושפע, בהתאם למה שיצרן הציוד המקורי יבחר לחשוף עם ה-HAL הזה. לא צפויה השפעה על ספקי הסלולר.
מה שתכללו בדוחות על באגים תלוי במידע שנראה לכם רלוונטי לניפוי הבאגים, אבל בדרך כלל כדאי להוסיף כמה שיותר פרטים.
דוגמאות ומקור
יש הטמעה שמוגדרת כברירת מחדל של הגרסה 1.0 (הוצאה משימוש) של IDumpstateDevice, שמציגה דוגמה לשימוש בספריית ה-util של dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. יש גם הטמעה של Cuttlefish של HAL 1.1:device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
קוד המקור נמצא כאן:
- קובצי ה-HAL נמצאים בתיקייה
hardware/interfaces/dumpstate/1.1/
. - הקוד המקורי של dumpstate שקובע את התוכן של דוח הבאג נמצא בקטע
frameworks/native/cmds/dumpstate/
.
הטמעה
כדי להטמיע את ה-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. מומלץ מאוד לעשות זאת, כי כך תוכלו לצמצם באופן משמעותי את כמות המידע הפרטי הלא רלוונטי שכלול בדוחות הבאגים.
התכונה הזו תלויה בשינויים הליבה במצב Dump שנכללו גם ב-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
.