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