Quando atest esegue i test del dispositivo, atest esegue il push del file binario di test e delle relative risorse nella partizione /data e lo esegue con adb shell. L'eseguibile di test utilizza il shell dominio SELinux; pertanto, ricevi le norme SELinux associate al shell dominio. Quando il dispositivo è in esecuzione in modalità SELinux applicata, i test del dispositivo che violano queste norme non riescono a essere eseguiti e generano un errore SELinux.
In particolare, il dominio shell non ha regole allow per:
Accedere ai file nella partizione
/vendor, incluso il collegamento con le librerie installate nella partizione/vendor.Chiamare un'interfaccia Binder arbitraria.
Se un test del dispositivo richiede una o entrambe queste autorizzazioni, devi eseguire il test con le autorizzazioni root. Quando adbd ha le autorizzazioni di root, adbd utilizza
il dominio SELinux su sul dispositivo anziché shell, che ha
più privilegi.
Per eseguire un test del dispositivo utilizzando le autorizzazioni di root, aggiungi la proprietà require_root: true alla definizione del modulo Soong corrispondente nel file 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,
}