מודול PermissionController Mainline מכיל מדיניות פרטיות וממשק המשתמש הקשורים להענקה וניהול הרשאות (לדוגמה, המדיניות וממשק המשתמש להענקה וניהול הרשאות).
על PermissionController
מודול PermissionController מטפל בממשק משתמש, לוגיקה ותפקידים הקשורים להרשאות כדי לאפשר גישה לאפליקציות למטרה ספציפית. הוא שולט על הדברים הבאים:
- הענקת הרשאות בזמן ריצה (כולל הענקת אפליקציות מערכת)
- ניהול הרשאות בזמן ריצה (כולל קיבוץ הרשאות)
- מעקב אחר שימוש בהרשאות בזמן ריצה
- תפקידים
החל מאנדרואיד 12, כיתות המסגרת ושרת המערכת עבור Role
מועברות למודול כדי להפוך Role
למודולרי לחלוטין.
באנדרואיד 10, אפליקציית ההתקנה של החבילות מפוצלת למקטעים כדי לאפשר את עדכון הלוגיקה של ההרשאות. כמודול Mainline ניתן לעדכון, PermissionController:
- מקיים אינטראקציה עם המסגרת רק באמצעות @SystemApi יציב (ללא שימוש ב-@hide API).
- מטפל בכוונות הקשורות להרשאות עם עדיפות > 0.
- חושף מנגנון המאפשר ליצרני OEM להתאים אישית עיצוב.
- מספק שירותים שהמערכת והיישומים יכולים להיקשר אליהם, כולל ניהול תפקידים, ביטול הרשאות ומידע בסיסי על הרשאות (עבור הגדרות).
- תומך בביטול אוטומטי עבור אפליקציות שאינן בשימוש (חדש באנדרואיד 11).
ב-Android9, בקרת ההרשאות היא חלק מ- com.android.packageinstaller
.
ביטול אוטומטי עבור אפליקציות שאינן בשימוש
באנדרואיד 11, מודול PermissionsController יכול לבטל באופן אוטומטי הרשאות זמן ריצה עבור אפליקציות שלא נעשה בהן שימוש במשך תקופה ממושכת. אפליקציות הממוקדות ל-SDK 30 ומעלה מופעלות כברירת מחדל, בעוד שביטול אוטומטי מושבת כברירת מחדל לאפליקציות המיקוד ל-SDK 29 ומטה. כאשר מופעל, ביטול אוטומטי משפיע על כל הרשאות זמן הריצה אך פוטר את כל ההרשאות שניתנו מראש, כולל הרשאות קבועות במדיניות ובמערכת והרשאות שניתנו כברירת מחדל או לפי תפקיד. לפרטים, עיין באיפוס אוטומטי של הרשאות מיישומים שאינם בשימוש .
פורמט חבילה
הפורמט של מודול PermissionController שונה בין הגרסאות.
באנדרואיד 11 ומעלה, מודול PermissionController הוא בפורמט APEX וניתן לעדכון. שם החבילה הוא
com.google.android.permission
.באנדרואיד 10, מודול PermissionController הוא בפורמט APK ואינו ניתן לעדכון. שם החבילה הוא
com.google.android.permissioncontroller
.
גבול מודול
באנדרואיד 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
יצרני 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 יכולים להתאים אישית את נושא ממשק המשתמש של ההרשאות (צבעים, שוליים, גופנים וציורים) באמצעות שכבות-על של משאבי זמן ריצה (RROS) .