Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release thay vì aosp-main để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Các thiết bị chạy Android 12 bằng các phiên bản hạt nhân cao hơn phiên bản 5.4 phải đi kèm với hạt nhân GKI. Để các đối tác có thể truy cập vào DebugFS trong các bản dựng userdebug trong khi phát triển trên hạt nhân GKI, cấu hình hạt nhân CONFIG_DEBUG_FS được bật trong defconfig GKI.
Không bao giờ gắn DebugFS trong bản dựng người dùng cho các thiết bị chạy trên Android 12.
Bản dựng Userdebug có phạm vi kiểm thử tốt hơn so với bản dựng người dùng và được kiểm thử kỹ lưỡng trong suốt chu kỳ phát triển. Kế hoạch sau đây giảm thiểu sự khác biệt giữa hai loại bản dựng liên quan đến quyền truy cập DebugFS và mang lại các lợi ích sau:
Ngăn các bản dựng userdebug vô tình phụ thuộc vào DebugFS
cho chức năng mới
Đảm bảo rằng mọi chức năng hiện có bị hỏng do thiếu DebugFS đều được biết sớm trong chu kỳ phát triển
Quyền truy cập Debugfs trong các bản dựng userdebug được phân loại như sau:
Khởi chạy tệp DebugFS trong quá trình khởi động thiết bị, chẳng hạn như quyền ghi vào tệp trong DebugFS để bật tính năng thu thập dữ liệu gỡ lỗi.
Tạo báo cáo lỗi: HAL dumpstate đọc các tệp DebugFS khi DumpstateBoard() được dumpstate gọi. Thông tin này sẽ trở thành một phần của báo cáo lỗi.
Kiểm thử và xác thực dành riêng cho thiết bị.
Bảng sau đây mô tả cách hỗ trợ từng danh mục trong số 3 danh mục này trong Android 12. Xin lưu ý rằng nội dung sau đây chỉ áp dụng cho các bản dựng userdebug vì không thể gắn DebugFS trong các bản dựng dành cho người dùng.
Trường hợp sử dụng
Bản dựng userdebug Android 12
Khởi chạy tệp DebugFS một lần, trong quá trình khởi động.
Quyền truy cập này chỉ xảy ra một lần trong thời gian khởi động.
HAL Dumpstate thực hiện việc này trong quá trình khởi tạo HAL. Để bật tính năng tương tự,
init sẽ gắn DebugFS trong các bản dựng userdebug trước khi HAL khởi chạy.
Init gọi umount() trên DebugFS khi thiết bị đã khởi động xong.
Tạo báo cáo lỗi: HAL dumpstate đọc các tệp DebugFS, trở thành một phần của báo cáo lỗi.
Do dumpstate HAL thực hiện trong DumpstateBoard() khi được dumpstate gọi (DumpstateDevice.cpp).
Công cụ dumpstate (một phần của khung Android) đảm bảo rằng DebugFS
sẽ được gắn trong quá trình gọi.
Kiểm thử và xác thực theo thiết bị cụ thể
Adb root và shell. Gắn DebugFS từ shell adb bằng quyền truy cập gốc1.
1Để gắn DebugFS từ adb shell bằng quyền truy cập thư mục gốc, hãy sử dụng lệnh sau:
adb shell mount -t debugfs debugfs /sys/kernel/debug.
Hành động bắt buộc đối với đối tác
Đối tác phải thực hiện những việc sau dựa trên những thay đổi này trong các thiết bị Android 12:
Không cho phép DebugFS truy cập trong thời gian chạy. Các trường hợp ngoại lệ sau đây sẽ được áp dụng:
Tạo báo cáo lỗi (xuất phát từ HAL dumpstate)
Kiểm thử và xác thực (có thể truy cập bằng adb root và shell – đảm bảo rằng DebugFS được gắn trước)
Nhà phát triển có thể đặt thuộc tính gỡ lỗi ổn định persist.dbg.keep_debugfs_mounted để giữ DebugFs được gắn trong các lần khởi động lại trên bản dựng userdebug và eng.
Các bài kiểm thử tuân thủ GTS đảm bảo rằng hệ thống tệp DebugFS không được gắn trong các bản dựng của người dùng. Câu lệnh neverallow của Sepolicy đảm bảo rằng trong các thiết bị chạy trên Android 12 trở lên, các quy trình trái phép sẽ không được cấp quyền truy cập vào DebugFs.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],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`."]]