برنامههای امضاشده پلتفرم، برنامههایی هستند که گواهی امضای یکسان (یا سازگار) را با بسته پلتفرم ( android
) به اشتراک میگذارند. یک برنامه امضا شده با پلتفرم می تواند یک برنامه سیستمی (واقع در یک پارتیشن تصویر سیستم) یا یک برنامه غیر سیستمی باشد. مجوزهای امضای پلتفرم مجوزهایی هستند که توسط بسته پلتفرم تعریف شده اند که سطح حفاظت signature
نیز دارند. بیلدهای قابل اشکال زدایی بیلدهایی هستند که android.os.Build.isDebuggable()
true
را برمی گرداند، مانند userdebug
یا eng
.
از لحاظ تاریخی، سازندگان دستگاه کنترل کمی بر مجوزهای signature
پلتفرم میتوانستند به برنامههای غیرسیستم امضاشده پلتفرم اعطا کنند. با شروع اندروید 15، سازندگان میتوانند به صراحت مجوزهای امضای پلتفرم را در فایلهای XML پیکربندی سیستم در فهرست /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
نه.