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

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

لمحة عن "أداة التحكّم في الأذونات"

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

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

بدءًا من نظام التشغيل Android 12، سيتم تحديد إطار العمل وخادم النظام صفوف لـ Role يتم نقلها إلى الوحدة لتصبح Role معياريًا تمامًا.

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

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

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

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

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

تنسيق الحزمة

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

  • في نظام التشغيل Android 11 أو الإصدارات الأحدث، تكون وحدة 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

يمكن للمصنّعين الأصليين للأجهزة استخدام نماذج الأوامر للمساعدة في نقل التصحيحات الخاصة بهم من أدلة المشروع الأصلية إلى دليل المشروع الجديد.

نقل رمز تصحيح من أُطر العمل/القاعدة/القمة أو الإذن

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).