Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release, bukan aosp-main, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Halaman ini menjelaskan tata letak direktori untuk perangkat yang menjalankan Android 8.0 dan
yang lebih tinggi, aturan VNDK, dan sepolicy terkait.
Tata letak direktori
Tata Letak Direktori yang Degenerasi terdiri dari direktori
berikut:
/system/lib[64] berisi semua library bersama framework,
termasuk LL-NDK, VNDK, dan library khusus framework (termasuk
LL-NDK-Private dan beberapa library dengan nama yang sama seperti
yang ada di VNDK-SP).
/system/lib[64]/vndk-sp berisi library VNDK-SP untuk
HAL proses yang sama.
/vendor/lib[64] berisi library VNDK yang diperluas oleh vendor (library
VNDK DXUA atau DXUX), implementasi HAL proses yang sama, dan library bersama
vendor lainnya.
/vendor/lib[64]/vndk-sp dapat berisi library VNDK-SP yang diperluas oleh
penyedia.
Modul vendor memuat library VNDK dari /system/lib[64].
Aturan VNDK
Bagian ini menyediakan daftar lengkap aturan VNDK:
Proses framework tidak boleh memuat library bersama non-SP-HAL dari partisi
vendor (diberlakukan secara ketat mulai dari Android 8.1).
Proses vendor tidak boleh memuat library non-LL-NDK, non-VNDK-SP, dan
non-VNDK dari partisi sistem. (tidak diterapkan secara ketat di Android
O, tetapi akan diterapkan di rilis mendatang).
Library VNDK yang diinstal harus merupakan subkumpulan library VNDK
yang memenuhi syarat dan ditentukan Google.
Dependensi luar SP-HAL dan SP-HAL-Dep harus dibatasi untuk
library LL-NDK atau VNDK-SP yang ditentukan Google.
Dependensi library bersama SP-HAL harus dibatasi untuk library LL-NDK, library VNDK-SP yang ditentukan Google, library SP-HAL lainnya, dan/atau library bersama vendor lainnya yang dapat diberi label sebagai library SP-HAL-Dep.
Library bersama vendor hanya dapat diberi label sebagai library SP-HAL-Dep jika
bukan library AOSP dan dependensinya dibatasi untuk library LL-NDK,
library VNDK-SP yang ditentukan Google, library SP-HAL, dan/atau library SP-HAL-Dep
lainnya.
VNDK-SP harus mandiri. libRS_internal.so mendapatkan perlakuan
khusus di Android 8.0, tetapi akan ditinjau kembali dalam rilis mendatang.
Tidak ada komunikasi vendor framework melalui antarmuka non-HIDL, termasuk
(tetapi tidak terbatas pada) binder, soket, memori bersama, file, dll.
Ukuran partisi sistem harus cukup besar untuk memuat dua salinan
semua library VNDK yang memenuhi syarat dan salinan library bersama
framework yang tidak memenuhi syarat.
sepolicy
Proses framework yang dijelaskan di bagian ini sesuai dengan
coredomain di sepolicies, sedangkan proses vendor sesuai 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 library bersama di partisi sistem dan
vendor. Tabel berikut menunjukkan hak untuk mengakses library bersama
dari berbagai kategori:
Kategori
Partisi
Dapat diakses dari coredomain
Dapat diakses dari domain non-inti
LL-NDK
Sistem
Y
Y
LL-NDK-Private
Sistem
Y
Y
VNDK-SP/VNDK-SP-Private
Sistem
Y
Y
VNDK-SP-Ext
Vendor
Y
Y
VNDK
Sistem
Y
Y
VNDK-Ext
Vendor
T
Y
FWK-ONLY
Sistem
Y
T
FWK-ONLY-RS
Sistem
Y
T
SP-HAL
Vendor
Y
Y
SP-HAL-Dep
Vendor
Y
Y
KHUSUS VND
Vendor
T
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 mengandalkannya.
label same_process_hal_file
Library berikut ada di partisi vendor. Buat 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 file ini secara eksplisit sebagai same_process_hal_file, karena apa pun
di partisi vendor secara default tidak dapat diakses oleh coredomain. Tambahkan baris yang mirip dengan
berikut ke file file_contexts khusus vendor.
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-27 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-07-27 UTC."],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]