โมดูล PermissionController Mainline มีนโยบายความเป็นส่วนตัวและ UI ที่เกี่ยวข้องกับการให้และจัดการสิทธิ์ (เช่น นโยบายและ UI สำหรับการให้และจัดการสิทธิ์)
เกี่ยวกับ PermissionController
โมดูล PermissionController จะจัดการ UI, ตรรกะ และบทบาทที่เกี่ยวข้องกับสิทธิ์ เพื่อให้แอปเข้าถึงได้ตามวัตถุประสงค์ที่เฉพาะเจาะจง โดยจะควบคุมสิ่งต่อไปนี้
- การให้สิทธิ์รันไทม์ (รวมถึงการให้สิทธิ์แก่แอประบบ)
- การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)
- การติดตามการใช้งานสิทธิ์รันไทม์
- บทบาท
ตั้งแต่ Android 12 เป็นต้นไป ระบบจะย้ายเฟรมเวิร์กและคลาสเซิร์ฟเวอร์ของระบบ
สำหรับ Role
ไปยังโมดูลเพื่อให้ Role
เป็นแบบโมดูลาร์อย่างสมบูรณ์
ใน Android 10 แอปโปรแกรมติดตั้งแพ็กเกจ จะแบ่งออกเป็นส่วนๆ เพื่อให้สามารถอัปเดตตรรกะของสิทธิ์ได้ ในฐานะโมดูลเมนไลน์ที่อัปเดตได้ PermissionController จะมีลักษณะดังนี้
- โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ API @hide)
- จัดการ Intent ที่เกี่ยวข้องกับสิทธิ์โดยมีลำดับความสำคัญ > 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
(โปรเจ็กต์ platform/packages/apps/PackageInstaller
) และ
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
ย้ายแพตช์จาก packages/apps/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 ของสิทธิ์ (สี ระยะขอบ แบบอักษร และ drawable) ได้โดยใช้การวางซ้อนทรัพยากรรันไทม์ (RRO)