ऐप्लिकेशन के लिए अपडेट के मालिकाना हक को कॉन्फ़िगर और मैनेज करना

जब कोई ऐप्लिकेशन किसी स्टोर या इंस्टॉलर से इंस्टॉल किया जाता है, तो उस स्टोर या इंस्टॉलर को "इंस्टॉलर ऑफ़ रिकॉर्ड" माना जाता है. इसका मतलब है कि ऐप्लिकेशन को आखिरी बार इंस्टॉल करने वाला व्यक्ति. Android 14 से पहले, Android किसी दूसरे स्टोर या ऐप्लिकेशन इंस्टॉलर को, इंस्टॉलर ऑफ़ रिकॉर्ड बनने और उपयोगकर्ता को सूचना दिए बिना ऐप्लिकेशन को अपडेट करने की अनुमति देता था.

Android 14 में, किसी ऐप्लिकेशन को इंस्टॉल करने वाला पहला व्यक्ति, खुद को "अपडेट का मालिक" के तौर पर घोषित कर सकता है. साथ ही, वह ऐप्लिकेशन के अपडेट का मालिकाना हक भी रख सकता है. अगर कोई दूसरा व्यक्ति ऐप्लिकेशन को अपडेट करने की कोशिश करता है, तो उपयोगकर्ता को नए अपडेट को आगे बढ़ने से पहले उसकी अनुमति देने का मौका दिया जाता है.

मालिकाना हक अपडेट करने के लिए पैकेज ऑप्ट इन करना

यह बताने के लिए कि किसी स्टोर या इंस्टॉलर के पास ऐप्लिकेशन पैकेज का मालिकाना हक है, हर पैकेज के लिए अपने sysconfig एक्सएमएल में update-ownership टैग को इस तरह शामिल करें:

<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>
    

    इस उदाहरण में, legacyOwnershipDenylist नाम की एक्सएमएल पाबंदी वाली सूची का रेफ़रंस दिया गया है.

  2. इस फ़ॉर्मैट में, रॉ एक्सएमएल रिसॉर्स के तौर पर ब्लैकलिस्ट बनाएं:

    <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 को मैनेज करने का तरीका भी बताया गया है.

पहले से लोड किए गए ऐप्लिकेशन के मालिकाना हक की पुष्टि करना

पहले से लोड किए गए ऐप्लिकेशन का मालिकाना हक, इंस्टॉल करने वाले किसी खास व्यक्ति के पास नहीं होता. इसके बजाय, पहले से लोड किए गए ऐप्लिकेशन को इस तरीके से सिस्टम कॉन्फ़िगरेशन का इस्तेमाल करके एक नया मालिक असाइन किया जाता है मालिकाना हक अपडेट करने के लिए पैकेज ऑप्ट इन करें सेक्शन में दिखाया गया है.