כשאפליקציה מותקנת על ידי חנות או מתקין, החנות או המתקין נחשבים ל'מתקין הרשום', כלומר המתקין האחרון של האפליקציה. לפני 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. אם תכללו חבילה ברשימה הזו, אף חנות או מתקין לא יוכלו לבקש לעדכן את הבעלות על החבילה.
כדי למנוע מאחרים לעדכן את החבילות שלכם דרך חנות או מתקין אחרים:
כוללים את המאפיין הבא בחנות המקורית או בקובץ
AndroidManifest.xml
של מנהל ההתקנה:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>
הדוגמה הזו מפנה לרשימת דחייה של XML שנקראת
legacyOwnershipDenylist
.יוצרים רשימת דחייה כמשאב 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
.
יצירת בעלות על אפליקציות שנטענו מראש
בדרך כלל, אפליקציות שהוגדרו מראש לא נמצאות בבעלות של מתקין ספציפי. במקום זאת, לאפליקציות שהוגדרו מראש מוקצה בעלים חדש באמצעות הגדרות המערכת, כפי שמתואר בקטע הצטרפות לחבילות כדי לעדכן את הבעלות.