اندروید 11 یک HAL جدید به نام IDumpstateDevice (نسخه 1.1) اضافه می کند. این HAL روشهای جدید را با دامنه دقیقتری از گزارشهای فروشنده که در گزارشهای اشکال استاندارد گنجانده شدهاند، نشان میدهد، و همچنین به ساختهای کاربر اجازه میدهد تا ورود فروشنده را روشن و خاموش کنند (پیشفرض برای ساختهای کاربر خاموش است). این امر به OEM ها کنترل بیشتری بر آنچه در انواع خاصی از گزارش های اشکال گنجانده می شود، می دهد.
اگر OEM ها تصمیم به اجرای این HAL اختیاری کنند، این ویژگی بر آنها تأثیر می گذارد. بسته به آنچه که OEM برای افشای این HAL انتخاب می کند، ممکن است SoC ها تحت تأثیر قرار گیرند. هیچ تاثیری بر اپراتورها وجود ندارد.
آنچه در گزارشهای اشکال وارد میکنید به این بستگی دارد که کدام اطلاعات را برای اشکالزدایی مرتبط میدانید، اما عموماً پرمخاطبتر بهتر است.
مثال ها و منبع
یک پیادهسازی پیشفرض از نسخه 1.0 (منسوخ شده) IDumpstateDevice وجود دارد که نمونهای از استفاده از کتابخانه dumpstate util را نشان میدهد: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. همچنین یک اجرای Cuttlefish از 1.1 HAL وجود دارد: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
کد منبع در اینجا قرار دارد:
- فایل های HAL تحت
hardware/interfaces/dumpstate/1.1/
قرار دارند. - کد بومی dumpstate که محتویات گزارش اشکال را کنترل میکند تحت
frameworks/native/cmds/dumpstate/
است.
پیاده سازی
برای پیاده سازی این HAL، رابط [email protected]::IDumpstateDevice
HAL را پیاده سازی کنید. مقادیر احتمالی DumpstateMode
وجود دارد، اما احتمالاً همه آنها توسط یک دستگاه پشتیبانی نمی شوند (به عنوان مثال، WEAR برای دستگاه های غیر Wear OS).
اجرای HAL زبالهدان اختیاری است. همه دستگاههای جدیدی که با Android 11 راهاندازی میشوند، اگر Dumpstate HAL را اجرا کنند، باید IDumpstateDevice 1.1 را پیادهسازی کنند. دستگاههایی که قبلا IDumpstateDevice 1.0 را قبل از اندروید 11 پیادهسازی کردهاند، باید نسبتاً آسان به 1.1 ارتقا داده شوند، و انجام این کار اکیداً توصیه میشود، زیرا میزان اطلاعات خصوصی اضافی موجود در گزارشهای باگ را تا حد زیادی کاهش میدهد.
این ویژگی به تغییرات اصلی dumpstate بستگی دارد که در Android 11 نیز وجود دارد، که در frameworks/native/cmds/dumpstate
قرار دارد.
اجرای این HAL احتمالاً به برخی تغییرات SEPolicy در ویژگیهای خاص سیستم، فایلها و غیره نیاز دارد تا همه چیز به طور کامل کار کند، و نیاز به هماهنگی با فروشندگان برای ریختن تمام اطلاعات مرتبط در گزارشهای اشکال دارد.
سفارشی سازی
کاربر دستگاه میتواند با استفاده از تنظیمات برنامهنویس، ورود فروشنده را روشن یا خاموش کند. هنگامی که خاموش است، dumpstateBoard_1_1
ممکن است همچنان حداقل اطلاعات ضروری را که توسط OEM تعیین شده است، تولید کند. خاموش کردن ورود به سیستم فروشنده باعث می شود IDumpstateDevice::dumpstateBoard
فقط اطلاعات ضروری را به گزارش اشکال اضافه کند، در حالی که روشن کردن آن شامل هر اطلاعاتی است که OEM انتخاب می کند.
برای مثال میتوانید 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
است.