اندروید ۱۱ یک HAL جدید به نام IDumpstateDevice (نسخه ۱.۱) اضافه کرده است. این HAL روشهای جدیدی را در اختیار گزارشهای فروشنده قرار میدهد که در گزارشهای باگ استاندارد گنجانده شدهاند و همچنین به سازندگان اجازه میدهد تا ورود به سیستم فروشنده را فعال یا غیرفعال کنند (پیشفرض برای سازندگان کاربر غیرفعال است). این امر به تولیدکنندگان اصلی تجهیزات (OEM) کنترل بیشتری بر آنچه در انواع خاص گزارشهای باگ گنجانده میشود، میدهد.
این ویژگی در صورت تمایل تولیدکنندگان اصلی تجهیزات (OEM) برای پیادهسازی این HAL اختیاری، بر آنها تأثیر میگذارد. بسته به اینکه تولیدکننده اصلی تجهیزات (OEM) چه چیزی را با این HAL در معرض نمایش قرار میدهد، ممکن است SoCها تحت تأثیر قرار گیرند. هیچ تأثیری بر اپراتورها پیشبینی نمیشود.
آنچه در گزارشهای اشکال میگنجانید بستگی به این دارد که کدام اطلاعات را برای اشکالزدایی مرتبط میدانید، اما بهطورکلی هرچه مفصلتر باشد بهتر است.
مثالها و منابع
یک پیادهسازی پیشفرض از نسخه ۱.۰ (منسوخشده) IDumpstateDevice وجود دارد که نمونهای از استفاده از کتابخانه dumpstate util را نشان میدهد: 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، رابط کاربری android.hardware.dumpstate@1.1::IDumpstateDevice HAL را پیادهسازی کنید. مقادیر DumpstateMode زیادی وجود دارد، اما احتمالاً همه آنها توسط یک دستگاه واحد پشتیبانی نمیشوند (به عنوان مثال، WEAR برای دستگاههای بدون سیستم عامل Wear).
پیادهسازی dumpstate HAL اختیاری است. همه دستگاههای جدیدی که با اندروید ۱۱ عرضه میشوند، در صورت پیادهسازی Dumpstate HAL، باید IDumpstateDevice 1.1 را پیادهسازی کنند. دستگاههایی که قبل از اندروید ۱۱، IDumpstateDevice 1.0 را پیادهسازی کردهاند، باید به راحتی به نسخه ۱.۱ ارتقا یابند و انجام این کار اکیداً توصیه میشود، زیرا میزان اطلاعات خصوصی نامربوط موجود در گزارشهای باگ را تا حد زیادی کاهش میدهد.
این ویژگی به تغییرات اصلی dumpstate که در اندروید ۱۱ نیز وجود دارد و در مسیر frameworks/native/cmds/dumpstate قرار دارد، بستگی دارد.
پیادهسازی این HAL احتمالاً نیازمند برخی تغییرات در SEPolicy در برخی از ویژگیهای سیستم، فایلها و غیره خواهد بود تا همه چیز به طور کامل کار کند و همچنین مستلزم هماهنگی با فروشندگان برای ارائه تمام اطلاعات مربوطه در گزارشهای اشکال است.
سفارشیسازی
کاربر دستگاه میتواند با استفاده از تنظیمات توسعهدهنده، ورود فروشنده را فعال یا غیرفعال کند. وقتی این قابلیت خاموش است، dumpstateBoard_1_1 همچنان ممکن است حداقل اطلاعات ضروری را که توسط سازنده اصلی (OEM) تعیین میشود، نمایش دهد. خاموش کردن ورود فروشنده باعث میشود IDumpstateDevice::dumpstateBoard فقط اطلاعات ضروری را به گزارش اشکال اضافه کند، در حالی که روشن کردن آن شامل هر اطلاعاتی است که سازنده اصلی (OEM) انتخاب میکند.
شما میتوانید dumpstate.cpp (که متدهای IDumpstateDevice HAL را فراخوانی میکند) را تغییر دهید، برای مثال، تایماوت داده شده برای تکمیل dumpstateBoard را افزایش دهید. با این حال، منطق اصلی dumpstate.cpp باید بدون تغییر باقی بماند.
وقفهها میتوانند هر مقداری باشند، اما نباید زمان تکمیل گزارش اشکال را به طور چشمگیری افزایش دهند. به طور خاص، DumpstateMode::CONNECTIVITY بسیار حساس به زمان است و باید در سریعترین زمان ممکن اجرا شود تا تمام گزارشهای مربوط به مودم/وایفای/شبکه را جمعآوری کند.
اعتبارسنجی
یک تست VTS برای پیادهسازی IDumpstateDevice وجود دارد، و تستهای واحد عملکردی برای عملکرد کلی BugreportManager نیز وجود دارد.
مورد آزمایشی دستی توصیه شده frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java است.