PermissionController

Mô-đun PermissionController Mainline chứa các chính sách quyền riêng tư và giao diện người dùng liên quan đến việc cấp và quản lý quyền (ví dụ: các chính sách và giao diện người dùng để cấp và quản lý quyền).

Giới thiệu về PermissionController

Mô-đun PermissionController xử lý giao diện người dùng, logic và vai trò liên quan đến quyền để cho phép truy cập vào các ứng dụng cho mục đích cụ thể. Nó kiểm soát những điều sau đây:

  • Cấp quyền trong thời gian chạy (bao gồm cấp cho ứng dụng hệ thống)
  • Quản lý quyền trong thời gian chạy (bao gồm nhóm quyền)
  • Theo dõi việc sử dụng quyền trong thời gian chạy
  • Vai trò

Bắt đầu từ Android 12, các lớp máy chủ hệ thống và khung dành cho Role được chuyển vào mô-đun để biến Role thành mô-đun hoàn toàn.

Trong Android 10, ứng dụng Trình cài đặt gói được chia thành các phần để cho phép cập nhật logic quyền. Là một mô-đun Mainline có thể cập nhật, PermissionController:

  • Chỉ tương tác với khung thông qua @SystemApi ổn định (không sử dụng API @hide).
  • Xử lý các ý định liên quan đến quyền với mức độ ưu tiên > 0.
  • Đưa ra cơ chế cho phép các OEM tùy chỉnh chủ đề.
  • Cung cấp các dịch vụ mà hệ thống và ứng dụng có thể liên kết, bao gồm quản lý vai trò, thu hồi quyền và thông tin cơ bản về quyền (dành cho Cài đặt).
  • Hỗ trợ tự động thu hồi các ứng dụng không sử dụng (mới trên Android 11).

Trong Android9, kiểm soát quyền là một phần của com.android.packageinstaller .

Tự động thu hồi các ứng dụng không sử dụng

Trong Android 11, mô-đun PermissionsController có thể tự động thu hồi quyền trong thời gian chạy đối với các ứng dụng không được sử dụng trong một thời gian dài. Các ứng dụng nhắm mục tiêu SDK 30 trở lên được bật tính năng tự động thu hồi theo mặc định, trong khi các ứng dụng nhắm mục tiêu SDK 29 trở xuống bị tắt tính năng tự động thu hồi theo mặc định. Khi được bật, tính năng tự động thu hồi sẽ ảnh hưởng đến tất cả các quyền trong thời gian chạy nhưng miễn trừ tất cả các quyền được cấp trước, bao gồm các quyền và quyền được cố định theo chính sách và hệ thống cũng như các quyền được cấp theo mặc định hoặc theo vai trò. Để biết chi tiết, hãy tham khảo Tự động đặt lại quyền từ các ứng dụng không sử dụng .

Định dạng gói

Định dạng của mô-đun PermissionController khác nhau giữa các bản phát hành.

  • Trong Android 11 trở lên, mô-đun PermissionController ở định dạng APEX và có thể cập nhật. Tên gói là com.google.android.permission .

  • Trong Android 10, mô-đun PermissionController ở định dạng APK và không thể cập nhật. Tên gói là com.google.android.permissioncontroller .

Ranh giới mô-đun

Trong Android 12, mã mô-đun Quyền được chuyển từ packages/apps/PermissionController (dự án platform/packages/apps/PackageInstaller ) và frameworks/base/apex/permission (đây là thư mục con của dự án frameworks/base ).

Cấu trúc dự án mới cho packages/modules/Permission như sau:

  • Các tập tin từ frameworks/base/apex/permission
  • Tệp PermissionController từ packages/apps/PermissionController

OEM có thể sử dụng các lệnh mẫu để giúp di chuyển các bản vá của họ từ thư mục dự án ban đầu sang thư mục dự án mới.

Di chuyển một bản vá từ frameworks/base/apex/permission

root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 patch-file.txt

Di chuyển bản vá từ gói/ứng dụng/PermissionController

root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt

root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt

Tùy chỉnh

OEM có thể tùy chỉnh chủ đề giao diện người dùng quyền (màu sắc, lề, phông chữ và hình vẽ) bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RROS) .