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