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