Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Thư mục, Quy tắc và riêng biệt

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à chính sách liên quan.

Bố cục thư mục

Bố cục Thư mục được Tạo ra bao gồm các thư mục sau:

  • /system/lib[64] chứa tất cả các thư viện dùng chung khung, bao gồm LL-NDK, VNDK và các thư viện chỉ dành cho khung (bao gồm LL-NDK-Private và một số thư viện có cùng tên với các 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 một 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 DXUA hoặc DXUX VNDK), cá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.

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 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 được 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).
  • 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ó trong bản phát hành trong tương lai).
  • Thư viện VNDK được 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 trong các thư viện LL-NDK hoặc 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 đối với 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 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 được chia sẻ của nhà cung cấp chỉ có thể được gắn nhãn là thư viện SP-HAL-Dep nếu nó không phải là thư viện AOSP và các phụ thuộc của nó bị hạn chế đối với 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 có tính khép kín. libRS_internal.so được xử lý đặc biệt trong Android 8.0, nhưng sẽ được xem lại trong bản phát hành trong tương lai.
  • Không liên lạc 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ớ 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ả các thư viện VNDK đủ điều kiện và một bản sao của các thư viện dùng chung khung không đủ điều kiện.

màu nâu đỏ

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ụ: /dev/binder có thể được truy cập trong coredomain/dev/vndbinder có thể được truy cập trong 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 được chia sẻ trên phân vùng hệ thống và nhà cung cấp. Bảng sau đây cho thấy các quyền truy cập thư viện được chia sẻ thuộc các danh mục khác nhau:

thể loại Vách ngăn Có thể truy cập từ
coredomain
Có thể truy cập từ
không có lương
LL-NDK Hệ thống Y Y
LL-NDK-Riêng tư Hệ thống Y Y
VNDK-SP / VNDK-SP-Riêng tư 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-ONLY-RS Hệ thống Y N
SP-HAL Nhà cung cấp Y Y
SP-HAL-Dep Nhà cung cấp Y Y
CHỈ VND 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ì 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 dựa vào nó.

nhãn same_process_hal_file

Các thư viện sau đây tồn tại trong phân vùng của 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 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

same_process_hal_file nhãn rõ ràng các tệp này là same_process_hal_file , bởi vì theo mặc định, bất kỳ thứ gì trong phân vùng của vendor đều không thể truy cập được đối với 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