Dizinler, Kurallar ve Sepolicy

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu sayfada, Android 8.0 ve sonraki sürümleri çalıştıran cihazlar için dizin düzeni, VNDK kuralları ve ilgili sepolicy 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ı ada sahip bazı kitaplıklar dahil) dahil olmak üzere tüm çerçeve paylaşımlı kitaplıklarını içerir.
  • /system/lib[64]/vndk-sp , aynı işlem HAL'leri için VNDK-SP kitaplıkları içerir.
  • /vendor/lib[64] , satıcı tarafından genişletilen VNDK kitaplıklarını (DXUA veya DXUX VNDK kitaplıkları), aynı işlem HAL uygulamalarını ve diğer satıcı tarafından paylaşılan kitaplıkları 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] konumundan yükler.

VNDK kuralları

Bu bölüm, VNDK kurallarının kapsamlı bir listesini sağlar:

  • Çerçeve işlemleri, satıcı bölümlerinden SP-HAL olmayan paylaşılan kitaplıkları yüklememelidir (Android 8.1'den itibaren kesinlikle zorunlu tutulur).
  • 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 kesinlikle uygulanmaz ancak gelecekteki bir sürümde olacaktı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ı ile 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 satıcı tarafından paylaşılan 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 bunlarla sınırlıysa SP-HAL-Dep kitaplığı olarak etiketlenebilir. diğer SP-HAL-Dep kitaplıkları.
  • VNDK-SP bağımsız olmalıdır. libRS_internal.so , Android 8.0'da özel muamele görür, ancak gelecekteki bir sürümde yeniden ziyaret edilecektir.
  • Bağlayıcı, yuvalar, paylaşılan anılar, dosyalar vb. dahil (ancak bunlarla sınırlı olmamak üzere) HIDL olmayan arabirimler aracılığıyla çerçeve satıcısı 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.

sepolicy

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

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

Kategori bölme Şuradan erişilebilir:
çekirdek alan
Şuradan erişilebilir:
çekirdek olmayan
LL-NDK sistem Y Y
LL-NDK-Özel sistem Y Y
VNDK-SP/VNDK-SP-Özel sistem Y Y
VNDK-SP-Dahili SATICI Y Y
VNDK sistem Y Y
VNDK-Dahili SATICI N Y
FWK-SADECE sistem Y N
FWK-SADECE-RS sistem Y N
SP-HAL SATICI Y Y
SP-HAL-Dep SATICI Y Y
SADECE VND SATICI N Y

LL-NDK-Private ve VNDK-SP-Private, her iki alandan da erişilebilir olmalıdır, çünkü non coredomain bunlara dolaylı olarak erişecektir. Benzer şekilde, SP-HAL-Dep, SP- coredomain olduğundan, ana etki alanından erişilebilir olmalıdır.

same_process_hal_file etiketi

Satıcı bölümünde aşağıdaki kitaplıklar bulunur. Bu kitaplıkları hem coredomain alanından hem de çekirdek etki alanı dışından erişilebilir hale coredomain .

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

Bu dosyaları açıkça same_process_hal_file olarak etiketleyin, çünkü vendor bölümündeki hiçbir şey varsayılan olarak coredomain tarafından erişilebilir değildir. 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