از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
دستگاه هایی که با اندروید 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 مانت میکند. هنگامی که دستگاه بوت شدن کامل شد، Initumount() در 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 را در طول زمان اجرا ندهید. استثنائات زیر اعمال می شود:
تولید Bugreport (از HAL dumpstate می آید)
تست و اعتبارسنجی (قابل دسترسی توسط adb root و shell - مطمئن شوید که DebugFS ابتدا نصب شده است)
توسعهدهندگان میتوانند ویژگی debug persistent persist.dbg.keep_debugfs_mounted را تنظیم کنند تا DebugFs در راهاندازیهای مجدد روی userdebug و eng Builds نصب شوند.
تستهای انطباق GTS تضمین میکنند که سیستم فایل DebugFS در ساختهای کاربر نصب نشده است. بیانیههای سیاست neverallow تضمین میکنند که در دستگاههایی که با Android 12 یا بالاتر راهاندازی میشوند، فرآیندهای غیرمجاز به DebugFs دسترسی ندارند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Use DebugFS in Android 12\n\nDevices that launch with Android 12 using kernel\nversions higher than v5.4 are required to ship with the GKI kernel. So that\npartners can access `DebugFS` in userdebug builds while they develop on the GKI\nkernel, the kernel config `CONFIG_DEBUG_FS` is enabled in the GKI defconfig.\n**Never mount `DebugFS` in user builds** for devices\nlaunching on Android 12.\n\n\nUserdebug builds have better test coverage than user builds and get heavily\ntested throughout the development cycle. The following plan minimizes the\ndifference between the two build types with respect to `DebugFS` access, and\nprovides these benefits:\n\n- Prevents userdebug builds from accidentally depending on `DebugFS` for new functionality\n- Ensures that any existing functionality that's broken by the lack of DebugFS is known early in the development cycle\n\n\nDebugfs accesses **in userdebug builds** are categorized as\nfollows:\n\n1. `DebugFS` file initializations during device boot, such as a write access to a file in `DebugFS` to turn on debug data collection.\n2. Bugreport generation: The dumpstate HAL reads `DebugFS` files when `DumpstateBoard()` is invoked by `dumpstate`. This information becomes part of the bug report.\n3. Device-specific testing and validation.\n\nThe following table describes how each of these three categories is\nsupported in Android 12. Note that the\nfollowing only applies to userdebug builds since `DebugFS` can't be\nmounted in user builds.\n\n| Use case | Android 12 userdebug build |\n|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **One-time `DebugFS` files initialization, during startup** . This access **happens only once** during boot time. | Dumpstate HAL performs this during HAL initialization. To enable the same, init mounts `DebugFS` in userdebug builds before the HAL initializes. `Init` calls `umount()` on `DebugFS` when the device has completed booting. |\n| **Bugreport generation** : The dumpstate HAL reads `DebugFS` files, which become part of the bug report. | Done by dumpstate HAL within `DumpstateBoard()` when invoked by dumpstate ([DumpstateDevice.cpp](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/trout/hal/dumpstate/1.1/DumpstateDevice.cpp)). The dumpstate tool (part of the Android framework) ensures that `DebugFS` mounts during the invocation. |\n| **Device-specific testing and validation** | Adb root and shell. Mount `DebugFS` from the adb shell with root access^1^. |\n\n\n^1^To mount `DebugFS` from `adb shell` with\nroot access, use this command:\n\n`adb shell mount -t debugfs debugfs /sys/kernel/debug`.\n| **Note:**\n|\n| - **Android 12: There aren't any new APIs for accessing the\n| dumpstate HAL**.\n| - **Android 12: New clients don't have access** to the dumpstate HAL.\n| - Only the dumpstate HAL process and vendor-modprobe tool can access `DebugFS` for Android 12 launching devices, since the kernel modules it loads might create `DebugFS` files.\n\nRequired partner actions\n------------------------\n\n\nPartners must enact the following based on these changes in\nAndroid 12 devices:\n\n- Make all boot time initializations of `DebugFS` nodes happen during the dumpstate HAL initialization. For an example of how to do this, see [DNM:\n Example for boot time initialization of `DebugFS` files](https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1426054).\n- **Don't allow `DebugFS` access during runtime. The following exceptions\n apply:**\n - Bugreport generation (comes from the dumpstate HAL)\n - Testing and validation (accessible by `adb root` and `shell` - ensure that DebugFS is mounted first)\n\nDevelopers can set the debug persistent property\n`persist.dbg.keep_debugfs_mounted` to keep `DebugFs` mounted across\nreboots on userdebug and eng builds.\n\nGTS compliance tests ensure that the `DebugFS` filesystem isn't\nmounted in user builds. Sepolicy `neverallow` statements ensure that in devices\nlaunching on Android 12 or higher, unauthorized processes aren't provided\naccess to `DebugFs`."]]