רשימת ההיתרים של UID משותף בחתימה של הפלטפורמה

אפליקציות שנחתמו על ידי הפלטפורמה הן אפליקציות שמשתמשות באותו אישור חתימה (או באישור תואם) עם חבילת הפלטפורמה (android). אפליקציה שנחתמה על ידי הפלטפורמה יכולה להיות אפליקציית מערכת (שנמצאת במחיצה של תמונת מערכת) או אפליקציה שאינה אפליקציית מערכת. מזהי UID משותפים שנחתמו על ידי הפלטפורמה הם מזהי UID משותפים (android:sharedUserId) שמכילים אפליקציות שנחתמו על ידי הפלטפורמה. גרסאות שניתן לבצע בהן ניפוי באגים הן גרסאות שהפונקציה android.os.Build.isDebuggable() מחזירה true, כמו גרסאות userdebug או eng.

בעבר, ליצרני מכשירים הייתה שליטה מועטה באפליקציות לא מערכתיות עם חתימה של הפלטפורמה שיכלו להצטרף ל-UID משותף עם חתימה של הפלטפורמה. החל מ-Android 15, יצרנים יכולים לאפשר באופן מפורש לאפליקציות לא מערכתיות עם חתימה של הפלטפורמה להצטרף למזהי משתמש משותפים עם חתימה של הפלטפורמה בקובצי ה-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}