מודול ה-Mainline PermissionController מכיל מדיניות פרטיות וממשק משתמש שקשורים למתן הרשאות ולניהול שלהן (לדוגמה, המדיניות וממשק המשתמש למתן הרשאות ולניהול שלהן).
מידע על PermissionController
מודול PermissionController מטפל בממשק המשתמש, בלוגיקה ובתפקידים שקשורים להרשאות, כדי לאפשר לאפליקציות גישה למטרה ספציפית. הוא שולט בדברים הבאים:
- מתן הרשאות בזמן ריצה (כולל מתן הרשאות לאפליקציות מערכת)
- ניהול הרשאות בזמן ריצה (כולל קיבוץ הרשאות)
- מעקב אחר שימוש בהרשאות בתחילת ההפעלה
- תפקידים
החל מ-Android 12, מחלקות השרת של המערכת ושל מסגרת Role
מועברות למודול כדי להפוך את Role
למודולרי לחלוטין.
ב-Android 10, אפליקציית מתקין החבילות מחולקת לקטעים כדי לאפשר עדכון של לוגיקת ההרשאות. כמודול ראשי שאפשר לעדכן, PermissionController:
- האינטראקציה עם ה-framework מתבצעת רק באמצעות @SystemApi יציב (אין שימוש ב-API מסוג @hide).
- מטפל בכוונות שקשורות להרשאות עם עדיפות > 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
).
מבנה הפרויקט החדש של packages/modules/Permission
הוא:
- קבצים מ-
frameworks/base/apex/permission
- קבצים של PermissionController מ-
packages/apps/PermissionController
יצרני ציוד מקורי יכולים להשתמש בפקודות לדוגמה כדי להעביר את התיקונים שלהם מספריות הפרויקט המקוריות לספריית הפרויקט החדשה.
העברת תיקון מ-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
העברה של תיקון מחבילות/אפליקציות/בקר הרשאות
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
התאמה אישית
יצרני ציוד מקורי יכולים להתאים אישית את העיצוב של ממשק המשתמש של ההרשאות (צבעים, שוליים, גופנים ומשאבים שניתנים לציור) באמצעות שכבות-על של משאבים בזמן ריצה (RRO).