وحدة التحكّم بالأذونات

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

لمحة عن PermissionController

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

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

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

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

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

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

الإبطال التلقائي للتطبيقات غير المستخدَمة

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

تنسيق الحزمة

يختلف تنسيق وحدة 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).