Google cam kết thúc đẩy công bằng chủng tộc cho các cộng đồng Đen. Xem thế nào.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Thư mục, nội quy và sepolicy

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, quy tắc VNDK và sepolicy liên quan.

Bố cục thư mục

Bố cục thư mục thoái hóa bao gồm các thư mục sau:

  • /system/lib[64] chứa tất cả các thư viện chia sẻ khung, bao gồm thư viện LL-NDK, VNDK và chỉ khung (bao gồm LL-NDK-Private và một số thư viện có cùng tên 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 được mở rộng bởi nhà cung cấp (thư viện DXUA hoặc DXUX VNDK), triển khai HAL cùng quy trình và các thư viện chia sẻ của nhà cung cấp khác.
  • /vendor/lib[64]/vndk-sp có thể chứa các thư viện VNDK-SP được mở rộng bởi nhà cung cấp.

Các mô-đun nhà cung cấp tải các thư viện VNDK từ /system/lib[64] .

Quy tắc VNDK

Phần này cung cấp một danh sách đầy đủ các quy tắc VNDK:

  • Các quy trình khung không được tải các thư viện chia sẻ 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 bắt đầu 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 VNDK-SP và không 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 phát hành trong tương lai).
  • Các 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ụ thuộc bên ngoài của SP-HAL và SP-HAL-Dep phải được giới hạn ở các thư viện VND-LLK-SP do Google định nghĩa.
    • Các 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 chia sẻ của nhà cung cấp khác 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 đó không phải là thư viện AOSP và các phụ thuộc của nó bị giới hạn ở 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 thư viện SP-HAL-Dep khác.
  • VNDK-SP phải khép kín. libRS_internal.so được điều trị đặc biệt trong Android 8.0, nhưng sẽ được xem xét lại trong phiên bản tương lai.
  • Không có giao tiếp với nhà cung cấp khung thông qua các giao diện không phải HIDL, bao gồm (nhưng không giới hạn) chất kết dính, ổ cắm, bộ nhớ chia sẻ, 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ả các thư viện VNDK đủ điều kiện và một bản sao của các thư viện chia sẻ 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 vùng riêng trong khi các quy trình của nhà cung cấp tương ứng với non-coredomain . Ví dụ: /dev/binder có thể được truy cập trong coredomain/dev/vndbinder có thể được truy cập trong miền không có coredomain .

Các chính sách tương tự hạn chế quyền truy cập vào các thư viện dùng chung trên các phân vùng của hệ thống và nhà cung cấp. Bảng sau đây cho thấy quyền truy cập các thư viện chia sẻ thuộc các loại khác nhau:

thể loại Vách ngăn Có thể truy cập từ
tên miền
Có thể truy cập từ
không có tên miền
LL-NDK Hệ thống Y Y
LL-NDK-Riêng tư Hệ thống Y Y
VNDK-SP / VNDK-SP-Private Hệ thống Y Y
VNDK-SP-Ext Nhà cung cấp Y Y
VNDK Hệ thống Y Y
VNDK-Ext Nhà cung cấp N Y
CHỈ FWK Hệ thống Y N
FWK-CHỈ-RS Hệ thống Y N
SP-HAL Nhà cung cấp Y Y
SP-HAL-Dep Nhà cung cấp Y Y
CHỈ Nhà cung cấp N Y

LL-NDK-Private và VNDK-SP-Private phải có thể truy cập được từ cả hai miền vì tên miền không được coredomain sẽ gián tiếp truy cập chúng. Tương tự, SP-HAL-Dep phải có thể truy cập được từ coredomain vì SP-HAL phụ thuộc vào nó.

same_process_hal_file nhãn

Các thư viện sau tồn tại trong phân vùng nhà cung cấp. Làm cho các thư viện này có thể truy cập được từ cả coredomaincoredomain .

  • VNDK-SP-Ext in /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

same_process_hal_file gắn nhãn các tệp này là same_process_hal_file , bởi vì mọi thứ trong phân vùng vendor theo mặc định không thể truy cập được vào coredomain . 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