जब कोई ऐप्लिकेशन किसी स्टोर या इंस्टॉलर से इंस्टॉल किया जाता है, तो उस स्टोर या इंस्टॉलर को "इंस्टॉलर ऑफ़ रिकॉर्ड" माना जाता है. इसका मतलब है कि ऐप्लिकेशन को आखिरी बार इंस्टॉल करने वाला व्यक्ति. 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
को मैनेज करने का तरीका भी बताया गया है.
पहले से इंस्टॉल किए गए ऐप्लिकेशन के मालिकाना हक की पुष्टि करना
आम तौर पर, पहले से लोड किए गए ऐप्लिकेशन का मालिकाना हक किसी खास इंस्टॉलर के पास नहीं होता. इसके बजाय, पहले से लोड किए गए ऐप्लिकेशन को सिस्टम कॉन्फ़िगरेशन का इस्तेमाल करके नया मालिक असाइन किया जाता है, जैसा कि मालिकाना हक अपडेट करने के लिए पैकेज में ऑप्ट इन करें में दिखाया गया है.