PermissionController

تحتوي وحدة PermissionController Mainline على سياسات الخصوصية وواجهة المستخدم المتعلقة بمنح الأذونات وإدارتها (على سبيل المثال، السياسات وواجهة المستخدم لمنح الأذونات وإدارتها).

حول PermissionController

تتعامل وحدة PermissionController مع واجهة المستخدم والمنطق والأدوار المتعلقة بالأذونات للسماح بالوصول للتطبيقات لغرض محدد. ويتحكم في ما يلي:

  • منح إذن وقت التشغيل (بما في ذلك منح تطبيقات النظام)
  • إدارة أذونات وقت التشغيل (بما في ذلك تجميع الأذونات)
  • تتبع استخدام إذن وقت التشغيل
  • الأدوار

بدءًا من Android 12، تم نقل إطار العمل وفئات خادم النظام Role إلى الوحدة النمطية لجعل Role معياريًا بالكامل.

في Android 10، يتم تقسيم تطبيق Package Installer إلى أقسام لتمكين تحديث منطق الأذونات. باعتبارها وحدة رئيسية قابلة للتحديث، فإن PermissionController:

  • يتفاعل مع إطار العمل فقط عبرSystemApi المستقر (لا يوجد استخدامhide API).
  • يتعامل مع الأغراض المتعلقة بالأذونات بالأولوية > 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

انقل التصحيح من الحزم/التطبيقات/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) .