Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release thay vì aosp-main để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Trang này mô tả bố cục thư mục cho các thiết bị chạy Android 8.0 trở lên, các quy tắc VNDK và chính sách bảo mật liên quan.
Bố cục thư mục
Bố cục thư mục bị thoái hoá bao gồm các thư mục sau:
/system/lib[64] chứa tất cả thư viện dùng chung khung, bao gồm cả LL-NDK, VNDK và thư viện chỉ dành cho khung (bao gồm cả LL-NDK-Private và một số thư viện có tên giống với thư viện trong VNDK-SP).
/system/lib[64]/vndk-sp chứa các thư viện VNDK-SP cho các HAL cùng quy trình.
/vendor/lib[64] chứa các thư viện VNDK do nhà cung cấp mở rộng (thư viện VNDK DXUA hoặc DXUX), các phương thức triển khai HAL cùng quy trình và các thư viện dùng chung khác của nhà cung cấp.
/vendor/lib[64]/vndk-sp có thể chứa các thư viện VNDK-SP do nhà cung cấp mở rộng.
Các mô-đun của nhà cung cấp tải thư viện VNDK từ /system/lib[64].
Quy tắc VNDK
Phần này cung cấp danh sách toàn diện các quy tắc VNDK:
Các quy trình khung không được tải thư viện dùng chung không phải SP-HAL từ các phân vùng của nhà cung cấp (được thực thi nghiêm ngặt kể từ Android 8.1).
Các quy trình của nhà cung cấp không được tải các thư viện không phải LL-NDK, không phải VNDK-SP và không phải VNDK từ phân vùng hệ thống. (không được thực thi nghiêm ngặt trong Android O nhưng sẽ được thực thi trong bản phát hành trong tương lai).
Thư viện VNDK đã cài đặt phải là một tập hợp con của các thư viện VNDK đủ điều kiện do Google xác định.
Các phần phụ thuộc bên ngoài của SP-HAL và SP-HAL-Dep phải được giới hạn ở LL-NDK hoặc thư viện VNDK-SP do Google xác định.
Các phần phụ thuộc của thư viện dùng chung SP-HAL phải được giới hạn ở các thư viện LL-NDK, thư viện VNDK-SP do Google xác định, các thư viện SP-HAL khác và/hoặc các thư viện dùng chung khác của nhà cung cấp có thể được gắn nhãn là thư viện SP-HAL-Dep.
Thư viện dùng chung của nhà cung cấp chỉ có thể được gắn nhãn là thư viện SP-HAL-Dep nếu thư viện đó không phải là thư viện AOSP và các phần phụ thuộc của thư viện đó bị hạn chế ở các thư viện LL-NDK, thư viện VNDK-SP do Google xác định, thư viện SP-HAL và/hoặc các thư viện SP-HAL-Dep khác.
VNDK-SP phải tự chứa. libRS_internal.so được xử lý đặc biệt trong Android 8.0, nhưng sẽ được xem xét lại trong một bản phát hành trong tương lai.
Không có giao tiếp khung-nhà cung cấp thông qua các giao diện không phải HIDL, bao gồm (nhưng không giới hạn ở) liên kết, ổ cắm, bộ nhớ dùng chung, tệp, v.v.
Kích thước của phân vùng hệ thống phải đủ lớn để chứa hai bản sao của tất cả thư viện VNDK đủ điều kiện và một bản sao của thư viện dùng chung khung không đủ điều kiện.
sepolicy
Các quy trình khung được mô tả trong phần này tương ứng với coredomain trong sepolicies, trong khi các quy trình của nhà cung cấp tương ứng với non-coredomain. Ví dụ: bạn chỉ có thể truy cập vào /dev/binder trong coredomain và chỉ có thể truy cập vào /dev/vndbinder trong không phải coredomain.
Các chính sách tương tự hạn chế quyền truy cập vào thư viện dùng chung trên hệ thống và các phân vùng của nhà cung cấp. Bảng sau đây cho thấy các quyền truy cập vào thư viện dùng chung của nhiều danh mục:
Danh mục
Phân vùng
Có thể truy cập từ coredomain
Có thể truy cập từ miền không phải miền chính
LL-NDK
Hệ thống
Có
Có
LL-NDK-Private
Hệ thống
Có
Có
VNDK-SP/VNDK-SP-Private
Hệ thống
Có
Có
VNDK-SP-Ext
Nhà cung cấp
Có
Có
VNDK
Hệ thống
Có
Có
VNDK-Ext
Nhà cung cấp
Không
Có
FWK-ONLY
Hệ thống
Có
Không
FWK-ONLY-RS
Hệ thống
Có
Không
SP-HAL
Nhà cung cấp
Có
Có
SP-HAL-Dep
Nhà cung cấp
Có
Có
CHỈ DÀNH CHO VND
Nhà cung cấp
Không
Có
Bạn phải truy cập được LL-NDK-Private và VNDK-SP-Private từ cả hai miền vì các miền không phải coredomain sẽ truy cập gián tiếp vào các miền này. Tương tự, bạn phải có thể truy cập vào SP-HAL-Dep từ coredomain vì SP-HAL phụ thuộc vào lớp này.
nhãn same_process_hal_file
Các thư viện sau đây nằm trong phân vùng của nhà cung cấp. Cho phép truy cập vào các thư viện này từ cả coredomain và không phải coredomain.
VNDK-SP-Ext trong /vendor/lib[64]/vndk-sp
SP-HAL trong /vendor/lib[64] hoặc /vendor/lib[64]/hw
SP-HAL-Dep trong /vendor/lib[64] hoặc /vendor/lib[64]/hw
Gắn nhãn rõ ràng các tệp này là same_process_hal_file, vì theo mặc định, coredomain không thể truy cập vào bất kỳ nội dung nào trong phân vùng vendor. Thêm các dòng tương tự như sau vào tệp file_contexts dành riêng cho nhà cung cấp.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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```"]]