التطبيقات الموقَّعة على النظام الأساسي هي تطبيقات تشارك شهادة التوقيع نفسها (أو متوافقة)
مع حزمة النظام الأساسي (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
.