Android 11 یک HAL جدید، IDumpstateDevice (نسخه 1.1) اضافه میکند. این «لایه انتزاعی سختافزار» روشهای جدیدی را برای محدود کردن دقیقتر گزارشهای فروشنده که در گزارشهای اشکال استاندارد گنجانده شدهاند، و همچنین برای اینکه ساختهای کاربر بتوانند گزارشگیری فروشنده را روشن و خاموش کنند (پیشفرض برای ساختهای کاربر خاموش است) ارائه میدهد. این کار به «تولیدکنندگان تجهیزات اصلی» کنترل بیشتری میدهد تا تعیین کنند چه مواردی در انواع خاصی از گزارشهای اشکال لحاظ شود.
اگر سازندگان تجهیزات اصلی (OEM) انتخاب کنند این لایه انتزاع سختافزاری اختیاری را پیادهسازی کنند، این ویژگی بر آنها تأثیر میگذارد. بسته به اینکه سازنده اصلی تجهیزات چه چیزی را برای نمایش با این HAL انتخاب کند، ممکن است SoC تحت تأثیر قرار بگیرد. انتظار نمیرود تأثیری بر شرکتهای مخابراتی داشته باشد.
آنچه در گزارشهای اشکال میگنجانید به این بستگی دارد که کدام اطلاعات را برای اشکالزدایی مرتبط میدانید، اما بهطورکلی جزئیات بیشتر بهتر است.
مثالها و منبع
پیادهسازی پیشفرضی از نسخه (منسوخشده) ۱.۰ از
IDumpstateDevice وجود دارد که نمونهای از استفاده از کتابخانه ابزار dumpstate را نشان میدهد:
frameworks/native/cmds/dumpstate/DumpstateUtil.h. پیادهسازی Cuttlefish از HAL نسخه ۱.۱ نیز وجود دارد:
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 راهاندازی میشوند، درصورتیکه Dumpstate HAL را پیادهسازی کنند، باید IDumpstateDevice 1.1 را پیادهسازی کنند. دستگاههایی که قبلاً IDumpstateDevice 1.0 را قبلاز Android 11 پیادهسازی کردهاند، ارتقا به نسخه 1.1 برایشان نسبتاً آسان است و انجام این کار بهشدت توصیه میشود، زیرا مقدار اطلاعات خصوصی اضافی موجود در گزارشهای اشکال را بهمیزان زیادی کاهش میدهد.
این ویژگی به تغییرات اصلی dumpstate که در Android 11 نیز گنجانده شده است بستگی دارد و در frameworks/native/cmds/dumpstate قرار دارد.
پیادهسازی این HAL احتمالاً به برخی تغییرات SEPolicy در برخی ویژگیهای سیستم، فایلها، و غیره نیاز دارد تا همه چیز بهطور کامل کار کند، و به هماهنگی با فروشندگان برای ریختن همه اطلاعات مربوطه در گزارشهای اشکال نیاز دارد.
سفارشیسازی
کاربر دستگاه میتواند بااستفاده از تنظیمات توسعهدهنده، گزارشگیری فروشنده را روشن یا خاموش کند.
وقتی خاموش باشد، dumpstateBoard_1_1 ممکن است همچنان اطلاعات ضروری حداقلی را که سازنده اصلی محصول تعیین کرده است
برونبرد کند. خاموش کردن گزارشگیری فروشنده باعث میشود
IDumpstateDevice::dumpstateBoard فقط اطلاعات ضروری را به گزارش
اشکال اضافه کند، درحالیکه روشن کردن آن شامل هر اطلاعاتی میشود که سازنده اصلی تجهیزات انتخاب میکند.
میتوانید 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.