Halaman ini menjelaskan tata letak direktori untuk perangkat yang menjalankan Android 8.0 dan yang lebih tinggi, aturan VNDK, dan kebijakan terkait.
Tata letak direktori
Tata Letak Direktori Terdegenerasi terdiri dari direktori berikut:
-
/system/lib[64]
berisi semua pustaka bersama kerangka kerja, termasuk LL-NDK, VNDK, dan pustaka kerangka saja (termasuk LL-NDK-Private dan beberapa pustaka dengan nama yang sama dengan yang ada di VNDK-SP). -
/system/lib[64]/vndk-sp
berisi pustaka VNDK-SP untuk HAL proses yang sama. -
/vendor/lib[64]
berisi pustaka VNDK yang diperluas oleh vendor (baik pustaka DXUA atau DXUX VNDK), implementasi HAL proses yang sama, dan pustaka bersama vendor lainnya. -
/vendor/lib[64]/vndk-sp
mungkin berisi pustaka VNDK-SP yang diperluas oleh vendor.
Modul vendor memuat pustaka VNDK dari /system/lib[64]
.
Aturan VNDK
Bagian ini memberikan daftar lengkap aturan VNDK:
- Proses kerangka kerja tidak boleh memuat pustaka bersama non-SP-HAL dari partisi vendor (diterapkan secara ketat mulai dari Android 8.1).
- Proses vendor tidak boleh memuat pustaka non-LL-NDK, non-VNDK-SP, dan non-VNDK dari partisi sistem. (tidak diterapkan secara ketat di Android O tetapi akan ada di rilis mendatang).
- Pustaka VNDK yang diinstal harus merupakan bagian dari pustaka VNDK yang memenuhi syarat yang ditentukan Google.
- Dependensi luar SP-HAL dan SP-HAL-Dep harus dibatasi ke LL-NDK atau library VNDK-SP yang ditentukan Google.
- Ketergantungan pustaka bersama SP-HAL harus dibatasi ke pustaka LL-NDK, pustaka VNDK-SP yang ditentukan Google, pustaka SP-HAL lainnya, dan/atau pustaka bersama vendor lainnya yang dapat diberi label sebagai pustaka SP-HAL-Dep .
- Pustaka bersama vendor dapat diberi label sebagai pustaka SP-HAL-Dep hanya jika itu bukan pustaka AOSP dan dependensinya dibatasi untuk pustaka LL-NDK, pustaka VNDK-SP yang ditentukan Google, pustaka SP-HAL, dan/atau perpustakaan SP-HAL-Dep lainnya.
- VNDK-SP harus mandiri.
libRS_internal.so
mendapat perlakuan khusus di Android 8.0, tetapi akan ditinjau kembali di rilis mendatang. - Tidak ada komunikasi kerangka-vendor melalui antarmuka non-HIDL, termasuk (tetapi tidak terbatas pada) pengikat, soket, memori bersama, file, dll.
- Ukuran partisi sistem harus cukup besar untuk memuat dua salinan semua pustaka VNDK yang memenuhi syarat dan salinan pustaka bersama kerangka kerja yang tidak memenuhi syarat.
kebijakan
Proses kerangka kerja yang dijelaskan di bagian ini sesuai dengan coredomain
dalam kebijakan sementara proses vendor terkait dengan non-coredomain
. Misalnya, /dev/binder
hanya dapat diakses di coredomain
dan /dev/vndbinder
hanya dapat diakses di non- coredomain
.
Kebijakan serupa membatasi akses ke pustaka bersama pada sistem dan partisi vendor. Tabel berikut menunjukkan hak untuk mengakses pustaka bersama dari berbagai kategori:
Kategori | Partisi | Dapat diakses dari domain inti | Dapat diakses dari domain non-inti |
---|---|---|---|
LL-NDK | Sistem | kamu | kamu |
LL-NDK-Pribadi | Sistem | kamu | kamu |
VNDK-SP/VNDK-SP-Pribadi | Sistem | kamu | kamu |
VNDK-SP-Ext | Penjual | kamu | kamu |
VNDK | Sistem | kamu | kamu |
VNDK-Ext | Penjual | N | kamu |
HANYA Fwk | Sistem | kamu | N |
FWK-HANYA-RS | Sistem | kamu | N |
SP-HAL | Penjual | kamu | kamu |
SP-HAL-Dep | Penjual | kamu | kamu |
HANYA VND | Penjual | N | kamu |
LL-NDK-Private dan VNDK-SP-Private harus dapat diakses dari kedua domain tersebut karena non- coredomain
akan mengaksesnya secara tidak langsung. Demikian pula, SP-HAL-Dep harus dapat diakses dari coredomain
karena SP-HAL bergantung padanya.
same_process_hal_file
yang sama
Pustaka berikut ada di partisi vendor. Jadikan library ini dapat diakses dari 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 secara eksplisit file-file ini sebagai same_process_hal_file
, karena semua yang ada di partisi vendor
secara default tidak dapat diakses oleh coredomain
. Tambahkan baris yang mirip dengan berikut ini 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