PermissionController

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

لمحة عن PermissionController

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

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

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

في نظام التشغيل Android 10، تم تقسيم تطبيق "مُثبِّت الحِزم" إلى أقسام لتفعيل تعديل منطق الأذونات. بصفتها وحدة رئيسية قابلة للتحديث، تؤدي PermissionController إلى ما يلي:

  • لا تتفاعل مع إطار العمل إلا من خلال واجهة برمجة التطبيقات الثابتة @SystemApi (لا يتم استخدام واجهة برمجة التطبيقات @hide).
  • تعالج النوايا ذات الصلة بالأذونات بأولوية أكبر من 0.
  • يوفّر آلية لتفعيل مصنعي المعدّات الأصلية لتخصيص المظهر.
  • توفّر خدمات يمكن للنظام والتطبيقات الربط بها، بما في ذلك إدارة الأدوار وإلغاء الأذونات ومعلومات الأذونات الأساسية (لتطبيق "الإعدادات").
  • تتيح ميزة "الإلغاء التلقائي" للتطبيقات غير المستخدَمة (ميزة جديدة في Android 11).

في Android 9، يكون التحكّم في الأذونات جزءًا من com.android.packageinstaller.

الإلغاء التلقائي لأذونات التطبيقات غير المستخدَمة

في الإصدار 11 من نظام التشغيل Android، يمكن أن تلغي وحدة PermissionsController تلقائيًا أذونات وقت التشغيل للتطبيقات التي لم يتم استخدامها لعدة أشهر. تكون ميزة الإبطال التلقائي مفعّلة تلقائيًا في التطبيقات التي تستهدف الإصدار 30 من حزمة تطوير البرامج (SDK) أو إصدارًا أحدث، في حين تكون هذه الميزة غير مفعّلة تلقائيًا في التطبيقات التي تستهدف الإصدار 29 من حزمة تطوير البرامج (SDK) أو إصدارًا أقدم. عند تفعيل ميزة "السحب التلقائي"، تؤثّر هذه الميزة في جميع أذونات وقت التشغيل، ولكنها تستثني جميع الأذونات الممنوحة مسبقًا، بما في ذلك الأذونات الثابتة في السياسة والنظام والأذونات الممنوحة تلقائيًا أو حسب الدور. للاطّلاع على التفاصيل، يُرجى الاطّلاع على مقالة إعادة ضبط الأذونات تلقائيًا من التطبيقات غير المستخدَمة.

تنسيق الحزمة

يختلف تنسيق وحدة PermissionController بين الإصدارات.

  • في الإصدار 11 من Android أو الإصدارات الأحدث، تكون وحدة PermissionController بتنسيق APEX ويمكن تعديلها. اسم الحزمة هو com.google.android.permission.

  • في الإصدار 10 من Android، تكون وحدة 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).