โมดูล 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 รหัสโมดูลการอนุญาตจะถูกย้ายจาก packages/apps/PermissionController
( platform/packages/apps/PackageInstaller
) และ frameworks/base/apex/permission
(นี่คือไดเร็กทอรีย่อยของ frameworks/base
project)
โครงสร้างโปรเจ็กต์ใหม่สำหรับ 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)