Khi atest chạy các kiểm thử trên thiết bị, atest sẽ đẩy tệp kiểm thử nhị phân và tài nguyên của tệp đó vào phân vùng /data rồi thực thi bằng adb shell. Tệp thực thi kiểm thử sử dụng miền SELinux shell; do đó, hãy nhận các chính sách SELinux được liên kết với miền shell. Khi thiết bị đang chạy ở chế độ SELinux bắt buộc, các kiểm thử thiết bị vi phạm những chính sách này sẽ không thành công kèm theo lỗi SELinux.
Đặc biệt, miền shell không có các quy tắc allow để:
Truy cập vào các tệp trên phân vùng
/vendor, bao gồm cả việc liên kết với các thư viện được cài đặt vào phân vùng/vendor.Gọi một giao diện Binder tuỳ ý.
Nếu một quy trình kiểm thử thiết bị cần một hoặc cả hai quyền này, thì bạn phải chạy quy trình kiểm thử với quyền root. Khi có quyền truy cập gốc, adbd sẽ sử dụng miền su SELinux trên thiết bị thay vì shell, miền này có nhiều đặc quyền hơn.adbd
Để chạy một bài kiểm thử trên thiết bị bằng quyền truy cập gốc, hãy thêm thuộc tính require_root: true vào định nghĩa mô-đun Soong tương ứng trong tệp Android.bp.
// file: Android.bp
rust_test {
name: "example_rust_test_that requires root",
// ...
rustlibs: [
"some-vendor-lib",
],
// This example test requires root permissions, because it calls Binder
// interfaces unavailable for the shell, and also links with a vendor
// library.
require_root: true,
}