فهرست مجازهای اجازه امضا

برنامه‌های امضاشده پلاتفرم برنامه‌هایی هستند که گواهینامه امضای یکسان (یا سازگار) با بسته پلاتفرم (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.