القائمة المسموح بها لأذونات التوقيع

التطبيقات الموقَّعة من خلال النظام الأساسي هي تطبيقات تشارك شهادة التوقيع نفسها (أو شهادة متوافقة) مع حزمة النظام الأساسي (android). يمكن أن يكون التطبيق الموقَّع من خلال النظام الأساسي تطبيقًا تابعًا للنظام (يقع في قسم صورة النظام)، أو تطبيقًا غير تابع للنظام. أذونات التوقيع من خلال النظام الأساسي هي أذونات تحدّدها حزمة النظام الأساسي وتتضمّن أيضًا مستوى الحماية signature. الإصدارات التي يمكن تصحيح أخطائها هي إصدارات تعرض الدالة android.os.Build.isDebuggable() القيمة true، مثل إصدارات userdebug أو eng.

في السابق، لم يكن لدى مصنّعي الأجهزة سوى القليل من التحكّم في أذونات signature المنصة التي يمكن منحها للتطبيقات غير التابعة للنظام والموقّعة من المنصة. بدءًا من Android 15، يمكن للمصنّعين منح أذونات التوقيع على النظام بشكل صريح في ملفات XML الخاصة بإعدادات النظام في الدليل /etc/permissions. إذا لم تتم إضافة تطبيق موقَّع بمنصة إلى القائمة المسموح بها لإذن التوقيع على المنصة، سيتصرف هذا الإذن كما لو أنّ التطبيق غير موقَّع على المنصة في الإصدارات غير القابلة للتصحيح.

إضافة قائمة مسموح بها

يمكنك إدراج قوائم السماح بالأذونات للتطبيقات في ملف XML واحد أو في ملفات XML متعددة موجودة في الدليل /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.