PermissionController

מודול 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) .