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:

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

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

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 khuôn khổ 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ể ràng buộc, bao gồm quản lý vai trò, thu hồi quyền và thông tin quyền cơ bản (đối với Cài đặt).
  • Hỗ trợ tự động thu hồi cho các ứng dụng không sử dụng (mới trong 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 đối vớ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 thời gian chạy đối với các ứng dụng không được sử dụng trong một khoảng 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ự độ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 đã 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 ảnh hưởng đến tất cả các quyền trong thời gian chạy nhưng sẽ miễn tất cả các quyền được cấp trước, bao gồm các quyền do chính sách và hệ thống cố định và 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 Quyền tự động đặt lại 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 được. 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 di 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 frameworks/base ).

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

  • Tệp 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ừ các khung / cơ sở / apex / quyền

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 một bản vá từ các 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 biến

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à bảng vẽ) bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RROS) .