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