التطبيقات الموقَّعة من النظام الأساسي هي التطبيقات التي تشارك شهادة التوقيع
نفسها (أو المتوافقة) مع حزمة النظام الأساسي (android
). ويمكن أن يكون التطبيق الموقَّع من النظام الأساسي
تطبيقًا للنظام الأساسي (يقع على قسم صورة النظام) أو تطبيقًا غير تابع للنظام الأساسي.
أذونات توقيع النظام الأساسي هي أذونات تحدّدها حزمة النظام الأساسي
وتتوفّر لها أيضًا مستوى الحماية signature
. الإصدارات القابلة لتصحيح الأخطاء هي إصدارات
يعرض فيها android.os.Build.isDebuggable()
القيمة true
، مثل إصدارات userdebug
أو
eng
.
في السابق، لم يكن بإمكان الشركات المصنّعة للأجهزة التحكّم كثيرًا في أذونات منصّة
signature
التي يمكن منحها للتطبيقات غير المخصّصة للنظام والتي تم توقيعها على المنصة.
بدءًا من Android 15، يمكن للجهات المصنّعة منح أذونات توقيع النظام صراحةً في ملفات XML الخاصة بإعدادات النظام في directory
/etc/permissions
. إذا لم تتم
إضافة تطبيق غير نظامي موقَّع على النظام الأساسي إلى القائمة المسموح بها لإذن توقيع النظام الأساسي، يعمل هذا الإذن
كما لو لم يكن التطبيق موقَّعًا على النظام الأساسي في الإصدارات غير القابلة لتصحيح الأخطاء.
إضافة قائمة مسموح بها
يمكنك إدراج قوائم الإذن المسموح بها للتطبيقات في ملف XML واحد أو في ملفات XML متعددة في الدليل frameworks/base/etc/permissions
:
/etc/permissions/signature-permissions-OEM_NAME.xml
/etc/permissions/signature-permissions-DEVICE_NAME.xml
لا تنطبق أي قاعدة صارمة على كيفية تنظيم المحتوى. يمكن لمنفّذِي الأجهزة تحديد بنية المحتوى شرط إضافة التطبيقات المناسبة وموافقاتهم إلى القائمة المسموح بها.
تخصيص قائمة مسموح بها
يتضمّن AOSP عملية تنفيذ قائمة مسموح بها يمكنك تخصيصها حسب الحاجة، على غرار قائمة الأذونات المميّزة المسموح بها. على سبيل المثال:
<!--
~ This XML file declares which platform signature permissions to grant to
~ platform signed nonsystem apps.
-->
<permissions>
<signature-permissions package="com.android.example">
<permission name="android.permission.READ_DEVICE_CONFIG"/>
...
</signature-permissions>
...
</permissions>
العثور على الأذونات غير المتوفّرة
للعثور على الأذونات غير المتوفّرة، ثبِّت تطبيقك الموقَّع على المنصة وتحقَّق من سجلّات الجهاز بحثًا عن تنسيق رسائل التحذير التالي:
Signature permission {PERMISSION_NAME} for package {PACKAGE_NAME} ({PACKAGE_PATH}) not in signature permission allowlist
وسيظل بإمكان النظام منح الإذن على النُسخ القابلة لتصحيح الأخطاء، ولكن ليس على
النُسخ غير القابلة لتصحيح الأخطاء، مثل نُسخ user
.