Bu sayfada, Android 8.0 ve sonraki sürümleri çalıştıran cihazların dizin düzeni, VNDK kuralları ve ilişkili sepolicy açıklanmaktadır.
Dizin düzeni
Degenerated Directory Layout (Dönüştürülmüş 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şı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]
, tedarikçi firma tarafından genişletilen VNDK kitaplıklarını (DXUA veya DXUX VNDK kitaplıkları), aynı işlem HAL uygulamalarını ve tedarikçi firmanın diğer paylaşılan kitaplıklarını içerir./vendor/lib[64]/vndk-sp
, tedarikçi firma tarafından genişletilen VNDK-SP kitaplıklarını içerebilir.
Tedarikçi 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 yer almaktadır:
- Çerçeve işlemleri, SP-HAL olmayan paylaşılan kitaplıkları tedarikçi bölümlerinden yüklememelidir (Android 8.1'den itibaren katı bir şekilde uygulanır).
- Tedarikçi firma işlemleri, sistem bölümünden LL-NDK, VNDK-SP ve VNDK dışındaki kitaplıkları yüklememelidir. (Android O'da katı bir şekilde uygulanmaz ancak gelecekteki bir sürümde uygulanacaktır).
- Yüklenen 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'nin dış bağımlılıkları LL-NDK veya Google tarafından tanımlanan VNDK-SP kitaplıklarıyla sınırlı olmalıdır.
- SP-HAL paylaşılan kitaplığının bağımlılıkları, LL-NDK kitaplıkları, Google tarafından tanımlanan VNDK-SP kitaplıkları, diğer SP-HAL kitaplıkları ve/veya SP-HAL-Dep kitaplıkları olarak etiketlenebilecek diğer tedarikçi paylaşılan kitaplıklarıyla kısıtlanmalıdır.
- Tedarikçi firma paylaşılan kitaplığı yalnızca AOSP kitaplığı değilse ve bağımlılıkları LL-NDK kitaplıkları, Google tarafından tanımlanan VNDK-SP kitaplıkları, SP-HAL kitaplıkları ve/veya diğer SP-HAL-Dep kitaplıklarıyla sınırlıysa SP-HAL-Dep kitaplığı olarak etiketlenebilir.
- VNDK-SP bağımsız olmalıdır.
libRS_internal.so
, Android 8.0'da özel bir işleme tabi tutulur ancak gelecekteki bir sürümde bu konu tekrar ele alınacaktır. - Binder, soket, paylaşılan anılar, dosyalar vb. dahil ancak bunlarla sınırlı olmamak üzere HIDL dışı arayüzler üzerinden çerçeve-tedarikçi iletişimi yapılamaz.
- Sistem bölümünün boyutu, uygun tüm VNDK kitaplıklarının iki kopyasını ve uygun olmayan çerçeve paylaşılan kitaplıklarının bir kopyasını barındıracak kadar büyük olmalıdır.
sepolicy
Bu bölümde açıklanan çerçeve süreçleri, sepolicies içindeki coredomain
'e, satıcı süreçleri ise non-coredomain
'a karşılık gelir. Örneğin, /dev/binder
yalnızca coredomain
'te, /dev/vndbinder
ise yalnızca coredomain
dışındaki yerlerde erişilebilir.
Benzer politikalar, sistem ve tedarikçi firma 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 | coredomain adresinden erişilebilir |
non-coredomain adresinden erişilebilir |
---|---|---|---|
LL-NDK | Sistem | Y | Y |
LL-NDK-Private | Sistem | Y | Y |
VNDK-SP/VNDK-SP-Private | Sistem | Y | Y |
VNDK-SP-Ext | Satıcı | Y | Y |
VNDK | Sistem | Y | Y |
VNDK-Ext | Satıcı | H | Y |
FWK-ONLY | Sistem | Y | H |
FWK-ONLY-RS | Sistem | Y | H |
SP-HAL | Satıcı | Y | Y |
SP-HAL-Dep | Satıcı | Y | Y |
VND-ONLY | Satıcı | H | Y |
coredomain
olmayanlar bunlara dolaylı olarak erişeceğinden LL-NDK-Private ve VNDK-SP-Private'e her iki alandan da erişilebilmelidir. Benzer şekilde, SP-HAL-Dep'ye SP-HAL'den erişilebildiği için coredomain
'ten erişilebilmelidir.
same_process_hal_file etiketi
Tedarikçi firma bölümünde aşağıdaki kitaplıklar bulunur. Bu kitaplıklara hem coredomain
hem de coredomain
olmayan kullanıcılardan erişilebilmesini sağlayın.
/vendor/lib[64]/vndk-sp
'te VNDK-SP-Ext/vendor/lib[64]
veya/vendor/lib[64]/hw
'te SP-HAL/vendor/lib[64]
veya/vendor/lib[64]/hw
'da SP-HAL-Dep
vendor
bölümündeki hiçbir şeye varsayılan olarak coredomain
erişemediğinden bu dosyaları açıkça same_process_hal_file
olarak etiketleyin. Tedarikçiye özgü 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