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