Dizinler, kurallar ve sepolicy

Bu sayfada, Android 8.0 ve sonraki sürümleri çalıştıran cihazlar için dizin düzeni açıklanmaktadır. daha yüksek, VNDK kuralları ve ilişkili sepolicy.

Dizin düzeni

Bozuk Dizin Düzeni şunlardan oluşur: dizinler:

  • /system/lib[64], çerçeve içinde paylaşılan tüm kitaplıkları içerir. ve yalnızca çerçeve kütüphanelerini ( LL-NDK-Private ve VNDK-SP'dekiler).
  • /system/lib[64]/vndk-sp, şunlar için VNDK-SP kitaplıkları içerir: HAL'leri ekleyebilirsiniz.
  • /vendor/lib[64], tedarikçi firma tarafından genişletilen VNDK kitaplıklarını içerir (ya da DXUA veya DXUX VNDK kitaplıkları), aynı süreç HAL uygulamaları ve diğer tedarikçi firmalar koordineli olacaklardır.
  • /vendor/lib[64]/vndk-sp, yardımcı olur.

Tedarikçi firma modülleri /system/lib[64] kaynağından VNDK kitaplıklarını yükler.

VNDK kuralları

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

  • Çerçeve işlemleri, satıcıdan SP-HAL olmayan paylaşılan kitaplıklar yüklememelidir bölümler (Android 8.1'den itibaren kesinlikle zorunlu kılınmıştır).
  • Tedarikçi firma işlemleri LL-NDK, VNDK-SP olmayan ve VNDK olmayan kitaplıkları sistem bölümünde bulabilirsiniz. (Android'de kesin olarak zorunlu kılınmaz) O, ancak daha sonraki bir sürümde olacaktır).
  • Yüklü VNDK kitaplıkları, Google tarafından tanımlanan uygun VNDK'nın bir alt kümesi olmalıdır kitaplıklar.
  • SP-HAL ve SP-HAL-Dep'in dış bağımlılıkları LL-NDK veya Google tarafından tanımlanan VNDK-SP kitaplıkları.
    • SP-HAL paylaşılan kitaplığın bağımlılıkları LL-NDK ile sınırlı olmalıdır. kitaplıkları, Google tanımlı VNDK-SP kitaplıkları, diğer SP-HAL kitaplıkları ve/veya SP-HAL-Dep olarak etiketlenebilecek diğer satıcı paylaşılan kitaplıklar kitaplıklar.
    • Tedarikçi firma tarafından paylaşılan bir kitaplık, yalnızca bir AOSP kitaplığı değildir ve bağımlılıkları LL-NDK kitaplıklarıyla sınırlıdır. Google tarafından tanımlanan VNDK-SP kitaplıkları, SP-HAL kitaplıkları ve/veya diğer SP-HAL-Dep kitaplıklar.
  • VNDK-SP bağımsız olmalıdır. libRS_internal.so özel hale geliyor kullanıma sunuyoruz, ancak gelecekteki bir sürümde yeniden ziyaret edilecek.
  • Aşağıdakiler dahil olmak üzere, HIDL dışı arayüzlerle çerçeve-tedarikçi iletişimi yoktur. dosya, yuva, paylaşılan anılar, dosyalar vb.
  • Sistem bölümünün boyutu iki kopya içerecek kadar büyük olmalıdır uygun olan tüm VNDK kitaplıklarının ve uygun olmayan çerçevenin bir kopyasının paylaşılmış kitaplıklar.

sepolicy

Bu bölümde açıklanan çerçeve işlemleri Tedarikçi firma işlemleri ise sepolitikalarda coredomain non-coredomain. Örneğin /dev/binder, yalnızca coredomain içinde erişilebilir ve /dev/vndbinder yalnızca coredomain dışında erişilebilir.

Benzer politikalar, sistem ve uygulama ortamlarında paylaşılan kitaplıklara erişimi kısıtlar. satıcı bölümleri. Aşağıdaki tabloda paylaşılan erişim hakları gösterilmektedir kitaplıklarını da kullanabilirsiniz:

Kategori Bölüm Coredomain'den
erişilebilir
Çekirdek alan dışındaki
alandan erişilebilir
LL-NDK Sistem Y Y
LL-NDK-Gizli Sistem Y Y
VNDK-SP/VNDK-SP-Özel Sistem Y Y
VNDK-SP-Ext Satıcı Y Y
VNDK Sistem Y Y
VNDK-Ext Satıcı H Y
YALNIZCA FWK Sistem Y H
YALNIZCA FWK-RSK Sistem Y H
SP-HAL Satıcı Y Y
SP-HAL-Dep Satıcı Y Y
YALNIZCA VND Satıcı H Y

LL-NDK-Private ve VNDK-SP-Private olmalıdır: her iki alandan da erişilebilir, çünkü coredomain dışı dolaylı olarak erişebilir. Benzer şekilde, SP-HAL-Dep'e coredomain, çünkü SP-HAL bunu kullanır.

aynı_işlem_hal_dosya etiketi

Tedarikçi firma bölümünde aşağıdaki kitaplıklar bulunur. Bu kitaplıklara her ikisinden de erişilebilir coredomain ve coredomain olmayan

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

Bu dosyaları açıkça same_process_hal_file olarak etiketleyin çünkü vendor bölümü varsayılan olarak coredomain tarafından erişilebilir değil. Şuna benzer satırlar ekle: tedarikçi firmaya özel file_contexts dosyasına 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