تحتوي وحدة PermissionController Mainline على سياسات الخصوصية وواجهة المستخدم ذات الصلة بمنح الأذونات وإدارتها (على سبيل المثال، السياسات وواجهة المستخدم لمنح الأذونات وإدارتها).
لمحة عن PermissionController
يتولّى وحدة PermissionController التعامل مع واجهة المستخدم والمنطق والأدوار ذات الصلة بالأذونات للسماح للتطبيقات بالوصول إلى البيانات لغرض محدّد. يتحكّم هذا الإعداد في ما يلي:
- منح أذونات التشغيل (بما في ذلك منحها لتطبيقات النظام)
- إدارة أذونات التشغيل (بما في ذلك تجميع الأذونات)
- تتبُّع استخدام أذونات التشغيل
- الأدوار
بدءًا من Android 12، سيتم نقل فئات إطار العمل وخادم النظام الخاصة بـ Role
إلى الوحدة النمطية لجعل Role
وحدة نمطية بالكامل.
في نظام التشغيل Android 10، تم تقسيم تطبيق "مثبِّت الحِزم" إلى أقسام لتتمكّن من تعديل منطق الأذونات. باعتبارها وحدة Mainline قابلة للتحديث، تتيح PermissionController ما يلي:
- التفاعل مع إطار العمل من خلال واجهة برمجة التطبيقات الثابتة @SystemApi فقط (بدون استخدام واجهة برمجة التطبيقات @hide).
- تعالج هذه الفئة الأهداف ذات الصلة بالأذونات التي لها أولوية أكبر من 0.
- تعرض هذه السمة آلية تتيح لمصنّعي المعدات الأصلية تخصيص المظهر.
- توفّر هذه الحزمة الخدمات التي يمكن للنظام والتطبيقات ربطها، بما في ذلك إدارة الأدوار وإلغاء الأذونات ومعلومات الأذونات الأساسية (للتطبيق "الإعدادات").
- يتيح الإلغاء التلقائي لأذونات التطبيقات غير المستخدَمة (ميزة جديدة في Android 11).
في Android 9، يشكّل التحكّم في الأذونات جزءًا من
com.android.packageinstaller
.
الإلغاء التلقائي لأذونات التطبيقات غير المستخدَمة
في Android 11، يمكن لوحدة PermissionsController إلغاء أذونات وقت التشغيل تلقائيًا للتطبيقات التي لم يتم استخدامها لفترة طويلة. يتم تفعيل ميزة الإبطال التلقائي تلقائيًا في التطبيقات التي تستهدف المستوى 30 أو مستوى أعلى من حزمة تطوير البرامج (SDK)، بينما يتم إيقاف ميزة الإبطال التلقائي تلقائيًا في التطبيقات التي تستهدف المستوى 29 أو مستوى أقل من حزمة تطوير البرامج (SDK). عند تفعيل هذا الخيار، سيؤثّر الإبطال التلقائي في جميع أذونات وقت التشغيل، ولكنّه سيستثني جميع الأذونات الممنوحة مسبقًا، بما في ذلك الأذونات الثابتة على مستوى السياسة والنظام والأذونات الممنوحة تلقائيًا أو حسب الدور. للحصول على التفاصيل، يُرجى الاطّلاع على مقالة إعادة ضبط الأذونات تلقائيًا للتطبيقات غير المستخدَمة.
تنسيق الحزمة
يختلف تنسيق وحدة PermissionController بين الإصدارات.
في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث، يتوفّر نموذج PermissionController بتنسيق APEX ويمكن تحديثه. اسم الحزمة هو
com.google.android.permission
.في نظام التشغيل Android 10، تكون وحدة PermissionController بتنسيق APK ولا يمكن تعديلها. اسم الحزمة هو
com.google.android.permissioncontroller
.
حدود الوحدة
في نظام التشغيل Android 12، تم نقل رمز وحدة Permission من 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
التخصيص
يمكن لمصنّعي المعدات الأصلية تخصيص مظهر واجهة مستخدم الأذونات (الألوان والهوامش والخطوط والرسومات القابلة للرسم) باستخدام تراكبات الموارد في وقت التشغيل (RRO).