ב-Android 11 נוסף HAL חדש, IDumpstateDevice (גרסה 1.1). שכבת ה-HAL הזו חושפת שיטות חדשות לצמצום ההיקף של יומני הספקים שנכללים בדוחות באגים רגילים, וגם מאפשרת לבניית משתמשים להפעיל ולהשבית את הרישום ביומן של הספקים (ברירת המחדל לבניית משתמשים היא השבתה). כך יצרני ציוד מקורי (OEM) מקבלים יותר שליטה על מה שנכלל בסוגים מסוימים של דוחות על באגים.
התכונה הזו משפיעה על יצרני ציוד מקורי (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 נמצאים בתיקייה
hardware/interfaces/dumpstate/1.1/
. - קוד המקור של dumpstate ששולט בתוכן של דוחות על באגים נמצא ב-
frameworks/native/cmds/dumpstate/
.
הטמעה
כדי להטמיע את ה-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
.