Когда atest запускает тесты устройств, atest загружает тестовый исполняемый файл и его ресурсы в раздел /data и запускает его с помощью adb shell . Исполняемый файл теста использует домен SELinux shell ; следовательно, он получает политики SELinux. связан с доменом shell . Когда устройство работает в режиме принудительного использования SELinux, тесты устройства, нарушающие эти правила, завершаются ошибкой SELinux.
Следует отметить, что для домена shell отсутствуют правила, allow следующее:
Доступ к файлам в разделе
/vendor, включая установление связей с библиотеками, размещенными в разделе/vendor.Вызовите произвольный интерфейс Binder.
Если для тестирования устройства требуется одно или оба этих разрешения, то тест необходимо запускать с правами root . Когда adbd имеет права root, adbd использует домен SELinux su на устройстве вместо shell , которая имеет больше привилегий.
Для запуска теста устройства с использованием прав root добавьте свойство require_root: true в соответствующее определение модуля Soong в файле 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,
}