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.
/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