PermissionController

המודול PermissionController Mainline מכיל את כללי המדיניות בנושא פרטיות ואת ממשק המשתמש שקשור להענקה ולניהול של הרשאות (לדוגמה, כללי המדיניות וממשק המשתמש להענקה ולניהול של הרשאות).

מידע על PermissionController

המודול PermissionController מטפל בממשק המשתמש, בלוגיקה ובתפקידים שקשורים להרשאות, כדי לאפשר לאפליקציות גישה למטרה ספציפית. הוא קובע את הדברים הבאים:

  • הענקת הרשאות בזמן ריצה (כולל הענקה לאפליקציות מערכת)
  • ניהול הרשאות בזמן ריצה (כולל קיבוץ הרשאות)
  • מעקב אחר השימוש בהרשאות בזמן ריצה
  • תפקידים

החל מ-Android 12, המערכת והשיעורים של שרת המערכת של Role מועברים למודול כדי להפוך את Role למודולרי לחלוטין.

ב-Android 10, אפליקציית 'התקנת חבילות' מחולקת למקטעים כדי לאפשר עדכון של לוגיקת ההרשאות. כמודול ראשי שניתן לעדכון, PermissionController:

  • האינטראקציה עם המסגרת מתבצעת רק דרך @SystemApi יציב (ללא שימוש ב-API של @hide).
  • מטפל בכוונות שקשורות להרשאות עם עדיפות > 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

העברת תיקון מ-packages/apps/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

התאמה אישית

יצרני ציוד מקורי יכולים להתאים אישית את העיצוב של ממשק המשתמש של ההרשאות (צבעים, שוליים, גופנים ורכיבי גרפיקה שניתן לצייר) באמצעות שכבות-על של משאבים בסביבת זמן ריצה (RROS).