برنامههای دارای امضای پلتفرم، برنامههایی هستند که گواهی امضای یکسان (یا سازگار) را با بسته پلتفرم ( android
) به اشتراک میگذارند. یک برنامه با امضای پلت فرم می تواند یک برنامه سیستمی (واقع در یک پارتیشن تصویر سیستم) یا یک برنامه غیر سیستمی باشد. UIDهای مشترک با امضای پلتفرم، UIDهای مشترک ( android:sharedUserId
) هستند که حاوی برنامههای امضا شده در پلتفرم هستند. بیلدهای قابل اشکال زدایی بیلدهایی هستند که android.os.Build.isDebuggable()
true
را برمی گرداند، مانند userdebug
یا eng
.
از لحاظ تاریخی، سازندگان دستگاه کنترل کمی بر روی اینکه کدام برنامههای غیرسیستم امضا شده با پلتفرم میتوانند به یک UID مشترک با امضای پلتفرم بپیوندند، نداشتند. با شروع اندروید 15، سازندگان میتوانند صراحتاً به برنامههای غیرسیستم امضا شده با پلتفرم اجازه دهند به UIDهای مشترک امضا شده با پلتفرم در فایلهای XML پیکربندی سیستم در فهرست /etc/permissions
بپیوندند. اگر یک برنامه غیرسیستم امضا شده با پلتفرم به لیست مجاز یک UID مشترک با امضای پلت فرم اضافه نشود، و برنامه همچنان سعی کند به UID مشترک امضا شده با پلتفرم بپیوندد (با android:sharedUserId
در مانیفست خود)، آن برنامه نمی تواند روی بیلدهای غیرقابل رفع اشکال نصب شود.
یک لیست مجاز اضافه کنید
میتوانید لیستهای مجاز برنامهها را در یک فایل XML یا در چندین فایل XML، مشابه frameworks/base/data/etc/package-shareduid-allowlist.xml
فهرست کنید:
<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.
- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
-->
<config>
<allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>
لیست مجاز گم شده را پیدا کنید
برای پیدا کردن یک ورودی لیست مجاز گم شده، سعی کنید برنامه غیرسیستم امضا شده با پلتفرم خود را روی یک سازه غیرقابل رفع اشکال نصب کنید و بررسی کنید که آیا همچنان قابل نصب است یا خیر. در غیر این صورت، میتوانید گزارشهای دستگاه را برای فرمت پیامهای هشدار زیر بررسی کنید:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}