הגדרה של הבעלות על עדכוני אפליקציות וטיפול בהם

כשאפליקציה מותקנת על ידי חנות או מתקין, החנות או המתקין נחשבים ל'מתקין הרשום', כלומר המתקין האחרון של האפליקציה. לפני Android 14, מערכת Android אפשרה לחנות אחרת או למתקין אחר של אפליקציה להפוך למתקין הרשום ולעדכן את האפליקציה בלי להודיע למשתמש.

ב-Android 14, המתקין הראשוני של האפליקציה יכול להצהיר על עצמו כ'בעלים של העדכון' ולנהל את העדכונים של האפליקציה. אם מתקין אחר ינסה לעדכן את האפליקציה, המשתמש יוכל לאשר את העדכון החדש לפני שהוא יושלם.

צירוף חבילות לעדכון בעלות

כדי להצהיר שחנות או מתקין הם הבעלים של חבילת אפליקציה, צריך לכלול את התג update-ownership בקובץ ה-XML של sysconfig לכל חבילה באופן הבא:

<update-ownership package="com.example.application" installer="com.example.installer" />

בדוגמה הזו, com.example.application הוא חבילת האפליקציה להיות בבעלות, וגם com.example.installer הוא הבעלים של החבילה. כשמאשרים את העדכון של בעלות החבילה, חנויות או מתקינים אחרים עם הרשאות צריכים לטפל בעדכון הבעלות ולקבל את הסכמת המשתמש כדי לעדכן את האפליקציה.

ביטול הצטרפות של חבילות לשינויים בבעלות

אפשר לבקש מהחנות או מהמתקין לבטל את ההצטרפות של קבוצת משנה של חבילות לעדכן את השינויים של הבעלים באמצעות רשימת ישויות שנחסמו ב-APK. אם תכללו חבילה ברשימה הזו, אף חנות או מתקין לא יוכלו לבקש לעדכן את הבעלות על החבילה.

כדי למנוע מאחרים לעדכן את החבילות שלכם דרך חנות או מתקין אחרים:

  1. צריך לכלול את הנכס הבא בחנות המקורית או בנכס של המתקין קובץ AndroidManifest.xml:

    <application …>
      <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST"
                android:resource="@xml/legacyOwnershipDenylist" />
    </application>
    

    בדוגמה הזו מצוין רשימת דחייה של XML שנקראת legacyOwnershipDenylist.

  2. צריך ליצור רשימת ישויות שנחסמו כמשאב XML גולמי בפורמט הבא:

    <deny-ownership>com.example.app1</deny-ownership>
    <deny-ownership>com.example.app2</deny-ownership>
    

אם חנות או מתקין יבקשו בעלות על חבילה ברשימת הדחייה, הבעלות לא תוענק והחבילה עדיין תותקן, אבל לא תהיה לה בעלות של מתקין כלשהו. בנוסף, לאף אחד לא יכולה להיות בעלות על אפליקציה שמופיעה ברשימת האפליקציות שמוגדרות כאסורות, ללא קשר למנהל ההתקנה.

קבוצת החבילות ברשימה הזו יכולה להשתנות על ידי עדכון למנהל ההתקנה ה-APK שמספק את הרשימה. כל בעלות שמוגדרת לחבילה שמתווספת לאחר מכן לרשימת הדחייה נמחקת כשמתבצע עדכון של מנהל ההתקנה. לכן, עדכונים עתידיים של חבילת האפליקציה ברשימת הדחייה לא ידרשו אינטראקציה של משתמשים.

ניהול עדכון הבעלים וקבלת הסכמה מהמשתמשים

ב-Android 14, גם אם לחנות או למתקין אפליקציות יש את ההרשאה android.permission.INSTALL_PACKAGES, עדיין צריך לטפל במצב STATUS_PENDING_USER_ACTION אם רוצים לעדכן אפליקציה שהבעלות על העדכונים שלה שייכת לחנות או למתקין אחרים.

באפליקציית הדוגמה InstallAPKSessionApi.java מוסבר גם איך לטפל ב-STATUS_PENDING_USER_ACTION.

הגדרת בעלות על אפליקציות שהוגדרו מראש

בדרך כלל, אפליקציות שהוגדרו מראש לא נמצאות בבעלות של מתקין ספציפי. במקום זאת, לאפליקציות שנטענו מראש מוקצה בעלים חדש באמצעות הגדרות המערכת, מוצגת בקטע צירוף חבילות לעדכון בעלות.