Thiết bị chạy Android 12 sử dụng nhân hệ điều hành
phải có các phiên bản cao hơn phiên bản 5.4 để gửi cùng với nhân GKI. Để
các đối tác có thể truy cập vào DebugFS
trong bản dựng userdebug trong khi phát triển trên GKI
kernel, cấu hình hạt nhân CONFIG_DEBUG_FS
sẽ được bật trong defconfig GKI.
Không bao giờ gắn kết DebugFS
trong bản dựng người dùng cho thiết bị
sẽ ra mắt trên Android 12.
Các bản dựng Userdebug có phạm vi kiểm thử tốt hơn so với bản dựng của người dùng và nhận được rất nhiều
được thử nghiệm trong suốt chu trình phát triển. Kế hoạch sau đây giúp giảm thiểu
sự khác biệt giữa 2 loại bản dựng liên quan đến quyền truy cập DebugFS
, và
sẽ mang lại những lợi ích sau:
- Ngăn các bản dựng gỡ lỗi người dùng 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 được biết đến từ đầu trong chu kỳ phát triển
Quyền truy cập Debugfs trong bản dựng userdebug được phân loại là 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 một tệp trongDebugFS
để bật tính năng gỡ lỗi thu thập dữ liệu. - Tạo báo cáo lỗi: HAL dumpstate đọc tệp
DebugFS
khiDumpstateBoard()
đượcdumpstate
gọi. Chiến dịch này sẽ trở thành một phần trong báo cáo lỗi. - Kiểm tra và xác thực theo thiết bị.
Bảng sau đây mô tả cách tương tác của từng loại trong số 3 danh mục này
được hỗ trợ trên Android 12. Lưu ý rằng
các điều kiện sau chỉ áp dụng cho các bản dựng userdebug vì không thể DebugFS
được gắn trong bản dựng người dùng.
Trường hợp sử dụng | Bản dựng gỡ lỗi người dùng trên Android 12 |
---|---|
Khởi chạy tệp DebugFS một lần trong khi khởi động.
Quyền truy cập này chỉ diễn ra một lần trong thời gian khởi động.
|
HAL (Lớp trừu tượng phần cứng) thực hiện việc này trong quá trình khởi chạy HAL. Để bật cùng một chế độ,
init 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
DebugFS tệp mà sẽ trở thành một phần của báo cáo lỗi.
|
Được thực hiện bằng dumpstate HAL trong DumpstateBoard() khi được gọi bởi dumpstate
(DumpstateDevice.cpp).
Công cụ dumpstate (một phần của khung Android) đảm bảo rằng DebugFS
gắn kết trong lệnh gọi.
|
Kiểm thử và xác thực theo thiết bị | Adb gốc và shell. Gắn DebugFS từ shell adb bằng
quyền truy cập thư mục gốc1.
|
1Để gắn DebugFS
từ adb shell
bằng
quyền truy cập thư mục gốc, hãy dùng lệnh sau:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Hành động bắt buộc của đối tác
Đối tác phải thực hiện những nội dung sau đây dựa trên những thay đổi này trong Thiết bị chạy Android 12:
- Thực hiện tất cả các lần khởi chạy thời gian khởi động của nút
DebugFS
trong quá trình khởi chạy HAL trạng thái kết xuất. Để biết ví dụ về cách thực hiện việc này, hãy xem Doanh nghiệp kỹ thuật số: Ví dụ về khởi động thời gian khởi động của tệpDebugFS
. - Không cho phép truy cập vào
DebugFS
trong thời gian chạy. Sau đây là các trường hợp ngoại lệ áp dụng:- Quá trình tạo báo cáo lỗi (bắt nguồn từ lớp trừu tượng phần cứng (HAL) ở trạng thái kết xuất)
- Thử nghiệm 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 tiên)
Nhà phát triển có thể đặt thuộc tính gỡ lỗi cố định
persist.dbg.keep_debugfs_mounted
để duy trì DebugFs
gắn kết trên
khởi động lại trên các 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 bản dựng người dùng. Câu lệnh Sepolicy neverallow
đảm bảo rằng trong các thiết bị
chạy trên Android 12 trở lên thì chưa cung cấp các quy trình trái phép
truy cập vào DebugFs
.