دستگاه هایی که با اندروید 12 با استفاده از نسخه های هسته بالاتر از نسخه 5.4 راه اندازی می شوند، باید با هسته GKI ارسال شوند. به طوری که شرکا می توانند به DebugFS
در ساخت های userdebug دسترسی داشته باشند در حالی که آنها بر روی هسته GKI توسعه می یابند، پیکربندی هسته CONFIG_DEBUG_FS
در defconfig GKI فعال است. هرگز DebugFS
در ساختهای کاربر برای دستگاههایی که در Android 12 راهاندازی میشوند، قرار ندهید .
ساختهای Userdebug پوشش تست بهتری نسبت به ساختهای کاربر دارند و در طول چرخه توسعه به شدت مورد آزمایش قرار میگیرند. طرح زیر تفاوت بین دو نوع ساخت را با توجه به دسترسی DebugFS
به حداقل می رساند و این مزایا را ارائه می دهد:
- از وابستگی تصادفی ایجاد اشکال کاربر به
DebugFS
برای عملکردهای جدید جلوگیری می کند - تضمین می کند که هر عملکرد موجود که به دلیل فقدان DebugFS شکسته شده است در اوایل چرخه توسعه شناخته شده است.
دسترسی های Debugfs در ساخت های userdebug به صورت زیر دسته بندی می شوند:
- مقداردهی اولیه فایل
DebugFS
در هنگام بوت دستگاه، مانند دسترسی نوشتن به فایل درDebugFS
برای فعال کردن جمع آوری داده های اشکال زدایی. - ایجاد Bugreport: Dumpstate HAL فایلهای
DebugFS
را زمانی کهDumpstateBoard()
توسطdumpstate
فراخوانی میشود، میخواند. این اطلاعات بخشی از گزارش اشکال می شود. - تست و اعتبارسنجی دستگاه خاص
جدول زیر نحوه پشتیبانی از هر یک از این سه دسته را در اندروید 12 توضیح میدهد. توجه داشته باشید که موارد زیر فقط برای ساختهای userdebug اعمال میشود زیرا DebugFS
نمیتوان در ساختهای کاربر نصب کرد.
مورد استفاده | ساخت اشکال زدایی کاربر اندروید 12 |
---|---|
یکبار راهاندازی فایلهای DebugFS ، در حین راهاندازی . این دسترسی تنها یک بار در زمان بوت اتفاق می افتد . | Dumpstate HAL این کار را در طول اولیه سازی HAL انجام می دهد. برای فعال کردن همین کار، init، DebugFS در ساختهای userdebug قبل از مقداردهی اولیه HAL مانت میکند. هنگامی که دستگاه بوت شدن کامل شد، Init umount() در DebugFS فراخوانی می کند. |
ایجاد گزارش اشکال : HAL dumpstate فایلهای DebugFS را میخواند، که بخشی از گزارش اشکال میشوند. | توسط dumpstate HAL در DumpstateBoard() هنگامی که توسط dumpstate فراخوانی می شود ( DumpstateDevice.cpp ) انجام می شود. ابزار dumpstate (بخشی از چارچوب اندروید) تضمین میکند که DebugFS در طول فراخوانی نصب میشود. |
تست و اعتبارسنجی دستگاه خاص | ریشه و پوسته Adb. DebugFS از پوسته adb با دسترسی ریشه 1 سوار کنید. |
1 برای نصب DebugFS
از adb shell
با دسترسی ریشه، از این دستور استفاده کنید:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
اقدامات شریک مورد نیاز
شرکا باید بر اساس این تغییرات در دستگاههای Android 12 موارد زیر را اعمال کنند:
- کاری کنید که تمام مقداردهی اولیههای زمان راهاندازی گرههای
DebugFS
در حین راهاندازی HAL dumpstate اتفاق بیفتد. برای مثالی از نحوه انجام این کار، DNM را ببینید: مثالی برای مقداردهی اولیه زمان راه اندازی فایل هایDebugFS
. - اجازه دسترسی
DebugFS
را در طول زمان اجرا ندهید. استثنائات زیر اعمال می شود:- تولید Bugreport (از HAL dumpstate می آید)
- تست و اعتبارسنجی (قابل دسترسی توسط
adb root
وshell
- مطمئن شوید که DebugFS ابتدا نصب شده است)
توسعهدهندگان میتوانند ویژگی debug persistent persist.dbg.keep_debugfs_mounted
را تنظیم کنند تا DebugFs
در راهاندازیهای مجدد روی userdebug و eng Builds نصب شوند.
تستهای انطباق GTS تضمین میکنند که سیستم فایل DebugFS
در ساختهای کاربر نصب نشده است. بیانیههای سیاست neverallow
تضمین میکنند که در دستگاههایی که با Android 12 یا بالاتر راهاندازی میشوند، فرآیندهای غیرمجاز به DebugFs
دسترسی ندارند.