Dizinler, Kurallar ve Sepolicy

Bu sayfada Android 8.0 ve üstünü çalıştıran cihazlar için dizin düzeni, VNDK kuralları ve ilgili politika açıklanmaktadır.

Dizin düzeni

Dejenere Dizin Düzeni aşağıdaki dizinlerden oluşur:

  • /system/lib[64] , LL-NDK, VNDK ve yalnızca çerçeve kitaplıkları (LL-NDK-Private ve VNDK-SP'dekilerle aynı adlara sahip bazı kitaplıklar dahil) dahil tüm çerçeve paylaşılan kitaplıklarını içerir.
  • /system/lib[64]/vndk-sp aynı işlem HAL'leri için VNDK-SP kitaplıklarını içerir.
  • /vendor/lib[64] satıcı tarafından genişletilen VNDK kitaplıklarını (DXUA veya DXUX VNDK kitaplıkları), aynı işlemli HAL uygulamalarını ve satıcının diğer paylaşılan kitaplıklarını içerir.
  • /vendor/lib[64]/vndk-sp satıcı tarafından genişletilen VNDK-SP kitaplıklarını içerebilir.

Satıcı modülleri VNDK kitaplıklarını /system/lib[64] adresinden yükler.

VNDK kuralları

Bu bölümde VNDK kurallarının kapsamlı bir listesi sunulmaktadır:

  • Çerçeve işlemleri, satıcı bölümlerinden SP-HAL olmayan paylaşılan kitaplıkları yüklememelidir (Android 8.1'den başlayarak kesinlikle uygulanır).
  • Satıcı işlemleri, sistem bölümünden LL-NDK olmayan, VNDK-SP olmayan ve VNDK olmayan kitaplıkları yüklememelidir. (Android O'da kesin olarak zorunlu değildir ancak gelecekteki bir sürümde uygulanacaktır).
  • Yüklü VNDK kitaplıkları, Google tarafından tanımlanan uygun VNDK kitaplıklarının bir alt kümesi olmalıdır.
  • SP-HAL ve SP-HAL-Dep'in dış bağımlılıkları LL-NDK veya Google tanımlı VNDK-SP kitaplıklarıyla sınırlandırılmalıdır.
    • SP-HAL paylaşılan kitaplığının bağımlılıkları, LL-NDK kitaplıkları, Google tanımlı VNDK-SP kitaplıkları, diğer SP-HAL kitaplıkları ve/veya SP-HAL-Dep kitaplıkları olarak etiketlenebilecek diğer sağlayıcının paylaştığı kitaplıklarla sınırlandırılmalıdır. .
    • Satıcı tarafından paylaşılan bir kitaplık, yalnızca bir AOSP kitaplığı değilse ve bağımlılıkları LL-NDK kitaplıkları, Google tanımlı VNDK-SP kitaplıkları, SP-HAL kitaplıkları ve/veya ile sınırlıysa SP-HAL-Dep kitaplığı olarak etiketlenebilir. diğer SP-HAL-Dep kütüphaneleri.
  • VNDK-SP bağımsız olmalıdır. libRS_internal.so , Android 8.0'da özel bir muamele görüyor ancak gelecekteki bir sürümde yeniden ele alınacak.
  • Bağlayıcı, yuvalar, paylaşılan bellekler, dosyalar vb. dahil (ancak bunlarla sınırlı olmamak üzere) HIDL olmayan arayüzler aracılığıyla çerçeve-satıcı iletişimi yoktur.
  • Sistem bölümünün boyutu, tüm uygun VNDK kitaplıklarının iki kopyasını ve uygun olmayan çerçeve paylaşılan kitaplıklarının bir kopyasını içerecek kadar büyük olmalıdır.

sepoliçe

Bu bölümde açıklanan çerçeve işlemleri, sepolicilerdeki coredomain karşılık gelirken, satıcı süreçleri non-coredomain karşılık gelir. Örneğin, /dev/binder yalnızca coredomain alanından erişilebilir ve /dev/vndbinder yalnızca coredomain dışından erişilebilir.

Benzer politikalar, sistem ve satıcı bölümlerindeki paylaşılan kitaplıklara erişimi kısıtlar. Aşağıdaki tabloda farklı kategorilerdeki paylaşılan kitaplıklara erişim hakları gösterilmektedir:

Kategori Bölüm Şuradan erişilebilir:
çekirdek alan adı
Şuradan erişilebilir:
çekirdek alan adı olmayan
LL-NDK Sistem e e
LL-NDK-Özel Sistem e e
VNDK-SP/VNDK-SP-Özel Sistem e e
VNDK-SP-Harici SATICI e e
VNDK Sistem e e
VNDK-Harici SATICI N e
SADECE FWK Sistem e N
SADECE FWK-RS Sistem e N
SP-HAL SATICI e e
SP-HAL-Dep SATICI e e
SADECE VND SATICI N e

LL-NDK-Private ve VNDK-SP-Private'a her iki alandan da erişilebilir olmalıdır çünkü coredomain olmayanlar bunlara dolaylı olarak erişecektir. Benzer şekilde, SP-HAL buna bağlı olduğundan SP-HAL-Dep'e coredomain alanından erişilebilmesi gerekir.

same_process_hal_file etiketi

Satıcı bölümünde aşağıdaki kütüphaneler mevcuttur. Bu kitaplıklara hem coredomain hem de coredomain dışından erişilebilmesini sağlayın.

  • /vendor/lib[64]/vndk-sp içindeki VNDK-SP-Ext
  • /vendor/lib[64] veya /vendor/lib[64]/hw içindeki SP-HAL
  • /vendor/lib[64] veya /vendor/lib[64]/hw içindeki SP-HAL-Dep

vendor bölümündeki hiçbir şeye varsayılan olarak coredomain tarafından erişilemeyeceğinden, bu dosyaları açıkça same_process_hal_file olarak etiketleyin. Satıcıya özel file_contexts dosyasına aşağıdakine benzer satırlar ekleyin.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0