כשמתקינים אפליקציה דרך חנות או כלי התקנה, החנות או כלי ההתקנה נחשבים ל "כלי ההתקנה הרשמי", כלומר כלי ההתקנה האחרון של האפליקציה. לפני 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
.
הגדרת בעלות על אפליקציות שנטענו מראש
בדרך כלל, אפליקציות שנטענו מראש לא שייכות למתקין ספציפי. במקום זאת, לאפליקציות שנטענו מראש מוקצה בעלים חדש באמצעות הגדרת המערכת, כמו שמוסבר במאמר הסכמה לעדכון הבעלות על חבילות.