PermissionController

โมดูล 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)