जब कोई ऐप्लिकेशन किसी स्टोर या इंस्टॉलर से इंस्टॉल किया जाता है, तो उस स्टोर या इंस्टॉलर को "इंस्टॉलर ऑफ़ रिकॉर्ड" माना जाता है. इसका मतलब है कि ऐप्लिकेशन को आखिरी बार इंस्टॉल करने वाला व्यक्ति. 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 में पाबंदी वाली सूची देकर, अपने स्टोर या इंस्टॉलर को पैकेज के किसी सबसेट को, मालिक के बदलावों से जुड़े अपडेट से ऑप्ट आउट करने के लिए कहा जा सकता है. इस सूची में किसी पैकेज को शामिल करने पर, कोई भी स्टोर या इंस्टॉलर, पैकेज के मालिकाना हक को अपडेट करने का अनुरोध नहीं कर सकता.
पैकेज को किसी दूसरे स्टोर या इंस्टॉलर से अपडेट होने से रोकने के लिए:
ओरिजनल स्टोर या इंस्टॉलर की
AndroidManifest.xml
फ़ाइल में यह प्रॉपर्टी शामिल करें:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>
इस उदाहरण में,
legacyOwnershipDenylist
नाम की एक्सएमएल पाबंदी वाली सूची का रेफ़रंस दिया गया है.इस फ़ॉर्मैट में, रॉ एक्सएमएल रिसॉर्स के तौर पर ब्लैकलिस्ट बनाएं:
<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
को मैनेज करने का तरीका भी बताया गया है.
पहले से लोड किए गए ऐप्लिकेशन के मालिकाना हक की पुष्टि करना
आम तौर पर, पहले से लोड किए गए ऐप्लिकेशन का मालिकाना हक किसी खास इंस्टॉलर के पास नहीं होता. इसके बजाय, पहले से लोड किए गए ऐप्लिकेशन को सिस्टम कॉन्फ़िगरेशन का इस्तेमाल करके नया मालिक असाइन किया जाता है, जैसा कि मालिकाना हक अपडेट करने के लिए पैकेज ऑप्ट इन करें में दिखाया गया है.