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