Direktori, Aturan, dan kebijakan

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