Cuando atest ejecuta pruebas en el dispositivo, envía el archivo binario de prueba y sus recursos a la partición /data y lo ejecuta con adb shell.atest El ejecutable de prueba usa el dominio shell de SELinux; por lo tanto, recibe las políticas de SELinux asociadas al dominio shell. Cuando el dispositivo se ejecuta en el modo SELinux aplicado, las pruebas del dispositivo que incumplen estas políticas fallan con un error de SELinux.
En particular, el dominio shell no tiene reglas de allow para hacer lo siguiente:
Acceder a los archivos de la partición
/vendor, lo que incluye la vinculación con las bibliotecas instaladas en la partición/vendorLlama a una interfaz de Binder arbitraria.
Si una prueba del dispositivo necesita uno o ambos permisos, debes ejecutar la prueba con permisos de root. Cuando adbd tiene permisos de administrador, usa el dominio su de SELinux en el dispositivo en lugar del shell, que tiene más privilegios.adbd
Para ejecutar una prueba de dispositivo con permisos de administrador, agrega la propiedad require_root: true a la definición del módulo Soong correspondiente en el archivo 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,
}