Direktori, Aturan, dan sepolicy

Halaman ini menjelaskan tata letak direktori untuk perangkat yang menjalankan Android 8.0 dan lebih tinggi, aturan VNDK, dan sepolicy terkait.

Tata letak direktori

Tata Letak Direktori yang Terdegenerasi terdiri dari direktori berikut:

  • /system/lib[64] berisi semua pustaka kerangka bersama, 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 dengan proses yang sama.
  • /vendor/lib[64] berisi pustaka VNDK yang diperluas oleh vendor (baik pustaka DXUA atau DXUX VNDK), implementasi HAL dengan 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 framework tidak boleh memuat pustaka bersama non-SP-HAL dari partisi vendor (diterapkan secara ketat mulai 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 dirilis di masa mendatang).
  • Pustaka VNDK yang terpasang harus merupakan bagian dari pustaka VNDK memenuhi syarat yang ditentukan Google.
  • Ketergantungan luar SP-HAL dan SP-HAL-Dep harus dibatasi pada pustaka LL-NDK atau VNDK-SP yang ditentukan Google.
    • Dependensi pustaka bersama SP-HAL harus dibatasi pada pustaka LL-NDK, pustaka VNDK-SP yang ditentukan Google, pustaka SP-HAL lainnya, dan/atau pustaka bersama vendor lain yang dapat diberi label sebagai pustaka SP-HAL-Dep .
    • Pustaka bersama vendor dapat diberi label sebagai pustaka SP-HAL-Dep hanya jika pustaka tersebut bukan pustaka AOSP dan dependensinya dibatasi pada 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, namun akan ditinjau kembali pada rilis mendatang.
  • Tidak ada komunikasi vendor kerangka kerja melalui antarmuka non-HIDL, termasuk (namun tidak terbatas pada) pengikat, soket, memori bersama, file, dll.
  • Ukuran partisi sistem harus cukup besar untuk memuat dua salinan dari semua pustaka VNDK yang memenuhi syarat dan satu salinan pustaka bersama kerangka kerja yang tidak memenuhi syarat.

sepolicy

Proses kerangka kerja yang dijelaskan di bagian ini berhubungan dengan coredomain di sepolicies sedangkan proses vendor berhubungan 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 perpustakaan bersama pada partisi sistem dan vendor. Tabel berikut menunjukkan hak untuk mengakses perpustakaan bersama dari berbagai kategori:

Kategori Partisi Dapat diakses dari
domain inti
Dapat diakses dari
non-domain inti
LL-NDK Sistem Y Y
LL-NDK-Swasta Sistem Y Y
VNDK-SP/VNDK-SP-Swasta Sistem Y Y
VNDK-SP-Ext Penjual Y Y
VNDK Sistem Y Y
VNDK-Ext Penjual N Y
HANYA FWK Sistem Y N
FWK-HANYA-RS Sistem Y N
SP-HAL Penjual Y Y
SP-HAL-Dep Penjual Y Y
HANYA VND Penjual N Y

LL-NDK-Private dan VNDK-SP-Private harus dapat diakses dari kedua domain karena non- coredomain akan mengaksesnya secara tidak langsung. Demikian pula SP-HAL-Dep harus dapat diakses dari coredomain karena SP-HAL bergantung padanya.

label same_process_hal_file

Pustaka berikut ada di partisi vendor. Jadikan perpustakaan 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 pada file-file ini sebagai same_process_hal_file , karena apa pun 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