Cihaz testleri için SELinux politikaları

atest cihaz testlerini çalıştırdığında test ikili programını ve kaynaklarını /data bölümüne aktarır ve adb shell ile yürütür.atest Test yürütülebilir dosyası shell SELinux alanını kullandığından shell alanıyla ilişkili SELinux politikalarını alır. Cihaz, SELinux'un zorunlu kılındığı modda çalışırken bu politikaları ihlal eden cihaz testleri, SELinux hatasıyla başarısız olur.

Özellikle, shell alanında aşağıdaki allow kurallar yoktur:

  • /vendor bölümündeki dosyalara erişme (/vendor bölümüne yüklenen kitaplıklarla bağlantı oluşturma dahil)

  • İsteğe bağlı bir bağlayıcı arayüzünü çağırın.

Bir cihaz testinin bu izinlerden birine veya her ikisine de ihtiyacı varsa testi root izinleriyle çalıştırmanız gerekir. adbd kök izinlerine sahip olduğunda adbd, daha fazla ayrıcalığa sahip olan shell yerine cihazdaki su SELinux alanını kullanır.

Kök izinlerini kullanarak cihaz testi çalıştırmak için Android.bp dosyasındaki ilgili Soong modülü tanımına require_root: true özelliğini ekleyin.

// 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,
}