โมดูล PermissionController Mainline ประกอบด้วยนโยบายความเป็นส่วนตัวและ UI ที่เกี่ยวข้องกับการให้และจัดการการอนุญาต (เช่น นโยบายและ UI สำหรับการอนุญาตและจัดการการอนุญาต)
เกี่ยวกับ PermissionController
โมดูล PermissionController จะจัดการ UI ตรรกะ และบทบาทที่เกี่ยวข้องกับการอนุญาต เพื่ออนุญาตให้เข้าถึงแอปเพื่อวัตถุประสงค์เฉพาะ มันควบคุมสิ่งต่อไปนี้:
- การให้สิทธิ์รันไทม์ (รวมถึงการให้สิทธิ์แก่แอประบบ)
- การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)
- การติดตามการใช้สิทธิ์รันไทม์
- บทบาท
เริ่มต้นใน Android 12 เฟรมเวิร์กและคลาสเซิร์ฟเวอร์ระบบสำหรับ Role
จะถูกย้ายไปยังโมดูลเพื่อทำให้ Role
เป็นโมดูลอย่างสมบูรณ์
ใน Android 10 แอป Package Installer จะถูกแบ่งออกเป็นส่วนต่างๆ เพื่อเปิดใช้งานลอจิกการอนุญาตที่จะอัปเดต ในฐานะที่เป็นโมดูล Mainline ที่อัปเดตได้ PermissionController:
- โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ @hide API)
- จัดการความตั้งใจที่เกี่ยวข้องกับการอนุญาตที่มีลำดับความสำคัญ > 0
- เปิดเผยกลไกในการทำให้ OEM ปรับแต่งชุดรูปแบบได้
- ให้บริการที่ระบบและแอปพลิเคชันสามารถผูกมัดได้ รวมถึงการจัดการบทบาท การเพิกถอนสิทธิ์ และข้อมูลการอนุญาตพื้นฐาน (สำหรับการตั้งค่า)
- รองรับการเพิกถอนอัตโนมัติสำหรับแอพที่ไม่ได้ใช้ (ใหม่ใน Android 11)
ใน Android9 การควบคุมการอนุญาตเป็นส่วนหนึ่งของ com.android.packageinstaller
เพิกถอนอัตโนมัติสำหรับแอพที่ไม่ได้ใช้
ใน Android 11 โมดูล PermissionsController สามารถเพิกถอนการอนุญาตรันไทม์โดยอัตโนมัติสำหรับแอปที่ไม่ได้ใช้เป็นระยะเวลานาน แอปที่กำหนดเป้าหมายเป็น SDK 30 ขึ้นไปจะเปิดใช้การเพิกถอน อัตโนมัติ โดยค่าเริ่มต้น ในขณะที่แอปที่กำหนดเป้าหมายเป็น SDK 29 หรือต่ำกว่าจะ ปิดใช้ การเพิกถอนอัตโนมัติโดยค่าเริ่มต้น เมื่อเปิดใช้งาน การเพิกถอนอัตโนมัติจะส่งผลต่อการอนุญาตรันไทม์ทั้งหมด แต่จะยกเว้นการอนุญาตที่ได้รับล่วงหน้าทั้งหมด รวมถึงการอนุญาตแบบกำหนดนโยบายและระบบ และสิทธิ์ที่ได้รับตามค่าเริ่มต้นหรือตามบทบาท สำหรับรายละเอียด โปรดดู รีเซ็ตการอนุญาตอัตโนมัติจากแอพที่ไม่ได้ใช้
รูปแบบแพ็คเกจ
รูปแบบของโมดูล PermissionController แตกต่างกันไปในแต่ละรุ่น
ใน Android 11 ขึ้นไป โมดูล PermissionController อยู่ในรูปแบบ APEX และสามารถอัปเดตได้ ชื่อแพ็คเกจคือ
com.google.android.permission
ใน Android 10 โมดูล PermissionController อยู่ในรูปแบบ APK และไม่สามารถอัปเดตได้ ชื่อแพ็คเกจคือ
com.google.android.permissioncontroller
ขอบเขตโมดูล
ใน Android 12 โค้ดโมดูล Permission จะถูกย้ายจาก packages/apps/PermissionController
(the platform/packages/apps/PackageInstaller
project) และ frameworks/base/apex/permission
(นี่คือไดเร็กทอรีย่อยของ frameworks/base
ร์ก/โปรเจ็กต์ฐาน)
โครงสร้างโครงการใหม่สำหรับ packages/modules/Permission
มีดังนี้:
- ไฟล์จาก
frameworks/base/apex/permission
- ไฟล์ PermissionController จาก
packages/apps/PermissionController
OEM สามารถใช้คำสั่งตัวอย่างเพื่อช่วยย้ายแพทช์จากไดเร็กทอรีโครงการเดิมไปยังไดเร็กทอรีโครงการใหม่
ย้ายโปรแกรมแก้ไขจาก 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
ย้ายโปรแกรมแก้ไขจากแพ็คเกจ/แอพ/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
การปรับแต่ง
OEM สามารถปรับแต่งธีม UI ของการอนุญาต (สี ระยะขอบ แบบอักษร และค่าที่ถอนได้) โดยใช้ การซ้อนทับทรัพยากรรันไทม์ (RROS)