تحتوي الوحدة الرئيسية PermissionController على سياسات الخصوصية وواجهة المستخدم المتعلّقة بمنح الأذونات وإدارتها (على سبيل المثال، السياسات وواجهة المستخدم لمنح الأذونات وإدارتها).
لمحة عن PermissionController
تتعامل وحدة PermissionController مع واجهة المستخدم والمنطق والأدوار المتعلّقة بالأذونات للسماح للتطبيقات بالوصول إلى بيانات معيّنة لغرض محدّد. وتتحكّم هذه الوحدة في ما يلي:
- منح أذونات التشغيل (بما في ذلك منحها لتطبيقات النظام)
- إدارة أذونات التشغيل (بما في ذلك تجميع الأذونات)
- تتبُّع استخدام أذونات التشغيل
- الأدوار
بدءًا من Android 12، يتم نقل إطار العمل وفئات خادم النظام
لـ Role
إلى الوحدة لجعل Roleمعيارية بالكامل.
في Android 10، يتم تقسيم تطبيق "مثبِّت الحِزم" إلى أقسام لتعديل منطق الأذونات. بصفتها وحدة رئيسية قابلة للتعديل، تقوم وحدة PermissionController بما يلي:
- التفاعل مع إطار العمل فقط من خلال واجهة برمجة التطبيقات @SystemApi الثابتة (بدون استخدام واجهة برمجة التطبيقات @hide)
- التعامل مع النوايا المتعلّقة بالأذونات التي تكون لها أولوية > 0
- عرض آلية تتيح لمصنّعي المعدات الأصلية تخصيص المظهر
- توفير الخدمات التي يمكن للنظام والتطبيقات الربط بها، بما في ذلك إدارة الأدوار وإلغاء الأذونات ومعلومات الأذونات الأساسية (للتطبيق "الإعدادات")
- السماح بالإلغاء التلقائي لأذونات التطبيقات غير المستخدَمة (ميزة جديدة في Android 11)
في Android 9، يكون التحكّم في الأذونات جزءًا من 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، يتم نقل رمز وحدة 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
التخصيص
يمكن لمصنّعي المعدات الأصلية تخصيص مظهر واجهة مستخدم الأذونات (الألوان والهوامش والخطوط و الرسومات) باستخدام تراكبات الموارد في وقت التشغيل (RROS).