Halaman ini menjelaskan tata letak direktori untuk perangkat yang menjalankan Android 8.0 dan aturan VNDK, dan kebijakan terkait.
Tata letak direktori
Tata Letak Direktori yang Tidak Dibuat terdiri dari hal berikut direktori:
/system/lib[64]
berisi semua library bersama framework, termasuk library LL-NDK, VNDK, dan khusus framework (termasuk LL-NDK-Private dan beberapa library dengan nama yang sama dengan satu di VNDK-SP)./system/lib[64]/vndk-sp
berisi library VNDK-SP untuk HAL dengan proses yang sama./vendor/lib[64]
berisi library VNDK yang diperluas oleh vendor (baik itu Library DXUA atau DXUX VNDK), implementasi HAL dengan proses yang sama, dan vendor perpustakaan bersama./vendor/lib[64]/vndk-sp
dapat berisi library VNDK-SP yang diperluas oleh vendor.
Modul vendor memuat library VNDK dari /system/lib[64]
.
Aturan VNDK
Bagian ini memberikan daftar lengkap aturan VNDK:
- Proses framework tidak boleh memuat library bersama non-SP-HAL dari vendor partisi (ditegakkan secara ketat mulai dari Android 8.1).
- Proses vendor tidak boleh memuat non-LL-NDK, non-VNDK-SP, dan non-VNDK dari partisi sistem. (tidak diberlakukan secara ketat di Android O tetapi akan ada di rilis mendatang).
- Library VNDK yang diinstal harus merupakan bagian dari VNDK yang memenuhi syarat yang ditentukan Google library.
- Ketergantungan luar SP-HAL dan SP-HAL-Dep harus dibatasi pada
Library LL-NDK atau VNDK-SP yang ditentukan Google.
- Dependensi library bersama SP-HAL harus dibatasi untuk LL-NDK library VNDK-SP yang ditetapkan Google, library SP-HAL lainnya, dan/atau perpustakaan bersama vendor lain yang dapat diberi label sebagai SP-HAL-Dep library.
- Sebuah pustaka bersama vendor dapat diberi label sebagai pustaka SP-HAL-Dep hanya jika bukan merupakan pustaka AOSP dan dependensinya dibatasi untuk library LL-NDK, Library VNDK-SP yang ditetapkan Google, library SP-HAL, dan/atau SP-HAL-Dep lainnya library.
- VNDK-SP harus bersifat mandiri. Dapatkan promo spesial untuk
libRS_internal.so
di Android 8.0, tetapi akan ditinjau kembali dalam rilis mendatang. - Tidak ada komunikasi framework-vendor melalui antarmuka non-HIDL, termasuk (tetapi tidak terbatas pada) binder, socket, memori bersama, file, dll.
- Ukuran partisi sistem harus cukup besar untuk menampung dua salinan dari semua library VNDK yang memenuhi syarat dan salinan framework bersama yang tidak memenuhi syarat library.
Sepolicy
Proses framework yang dijelaskan di bagian ini terkait dengan
coredomain
di sekebijakan, sedangkan proses vendor sesuai dengan
non-coredomain
. Misalnya, /dev/binder
dapat menjadi
yang hanya dapat diakses di coredomain
dan /dev/vndbinder
dapat
hanya dapat diakses di non-coredomain
.
Kebijakan serupa membatasi akses ke pustaka bersama pada sistem dan partisi vendor. Tabel berikut menampilkan hak untuk mengakses file yang dibagikan {i>library<i} dari berbagai kategori:
Kategori | Partisi | Dapat diakses dari coredomain |
Dapat diakses dari non-domain inti |
---|---|---|---|
LL-NDK | Sistem | Y | Y |
LL-NDK-Pribadi | Sistem | Y | Y |
VNDK-SP/VNDK-SP-Pribadi | Sistem | Y | Y |
VNDK-SP-Ext | Vendor | Y | Y |
VNDK | Sistem | Y | Y |
VNDK-Ext | Vendor | N | Y |
KHUSUS FWK | Sistem | Y | N |
Khusus FWK | Sistem | Y | N |
SP-HAL | Vendor | Y | Y |
SP-HAL-Dep | Vendor | Y | Y |
KHUSUS VND | Vendor | N | Y |
LL-NDK-Private dan VNDK-SP-Private harus
dapat diakses dari kedua domain karena non-coredomain
akan
secara tidak langsung
mengaksesnya. Demikian pula, SP-HAL-Dep harus
dapat diakses dari
coredomain
karena SP-HAL bergantung padanya.
Label same_process_hal_file
Library berikut ada di partisi vendor. Buat library ini dapat diakses dari keduanya
coredomain
dan non-coredomain
.
- VNDK-SP-Ext di
/vendor/lib[64]/vndk-sp
- SP-HAL di
/vendor/lib[64]
atau/vendor/lib[64]/hw
- SP-HAL-Dep di
/vendor/lib[64]
atau/vendor/lib[64]/hw
Beri label same_process_hal_file
pada file ini secara eksplisit, karena apa pun
dalam partisi vendor
secara default tidak dapat diakses oleh coredomain
. Tambahkan baris yang mirip dengan
baris berikut ke file file_contexts
khusus vendor.
/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