जब कोई ऐप किसी स्टोर या इंस्टॉलर द्वारा इंस्टॉल किया जाता है, तो स्टोर या इंस्टॉलर को "रिकॉर्ड का इंस्टॉलर" माना जाता है, जिसका अर्थ है ऐप का अंतिम इंस्टॉलर। एंड्रॉइड 14 से पहले, एंड्रॉइड किसी अन्य स्टोर या ऐप इंस्टॉलर को रिकॉर्ड का इंस्टॉलर बनने और उपयोगकर्ता को सूचित किए बिना ऐप को अपडेट करने की अनुमति देता था।
एंड्रॉइड 14 में, किसी ऐप का शुरुआती इंस्टॉलर खुद को "अपडेट ओनर" घोषित कर सकता है और ऐप के अपडेट का मालिक हो सकता है। यदि कोई अन्य इंस्टॉलर ऐप को अपडेट करने का प्रयास करता है, तो उपयोगकर्ता को आगे बढ़ने से पहले नए अपडेट को स्वीकृत करने का अवसर दिया जाता है।
स्वामित्व अद्यतन करने के लिए पैकेज चुनें
यह घोषित करने के लिए कि एक स्टोर या इंस्टॉलर एक ऐप पैकेज का मालिक है, प्रत्येक पैकेज के लिए अपने sysconfig
XML में update-ownership
टैग को निम्नानुसार शामिल करें:
<update-ownership package="com.example.application" installer="com.example.installer" />
इस उदाहरण में, com.example.application
स्वामित्व वाला ऐप पैकेज है और com.example.installer
पैकेज का स्वामी है। जब किसी पैकेज को स्वामित्व अपडेट करने के लिए चुना जाता है, तो अन्य विशेषाधिकार प्राप्त स्टोर या इंस्टॉलर को अपडेट मालिक को संभालना होता है और ऐप को अपडेट करने के लिए उपयोगकर्ता की सहमति प्राप्त करनी होती है ।
स्वामित्व परिवर्तन से पैकेजों को बाहर निकालें
आप एपीके में एक अस्वीकृत सूची प्रदान करके अपने स्टोर या इंस्टॉलर को अपडेट स्वामी परिवर्तनों में से पैकेजों का एक सबसेट चुनने के लिए कह सकते हैं। इस सूची में किसी पैकेज को शामिल करके, कोई भी स्टोर या इंस्टॉलर पैकेज के स्वामित्व को अद्यतन करने का अनुरोध नहीं कर सकता है।
पैकेजों को किसी अन्य स्टोर या इंस्टॉलर द्वारा अद्यतन करने योग्य न बनाने का विकल्प चुनने के लिए:
मूल स्टोर या इंस्टॉलर की
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>
यदि कोई स्टोर या इंस्टॉलर अस्वीकृत सूची में किसी पैकेज के स्वामित्व का अनुरोध करता है, तो स्वामित्व नहीं दिया जाएगा और पैकेज अभी भी स्थापित है, लेकिन किसी भी इंस्टॉलर के स्वामित्व में नहीं होगा। इसके अलावा, इंस्टॉलर की परवाह किए बिना, अस्वीकृत सूची पर किसी ऐप का स्वामित्व किसी के पास नहीं हो सकता।
इस सूची में पैकेजों का सेट सूची प्रदान करने वाले इंस्टॉलर एपीके के अपडेट के माध्यम से बदल सकता है। किसी पैकेज के लिए सेट किया गया कोई भी स्वामित्व जिसे बाद में अस्वीकार सूची में पेश किया जाता है, इंस्टॉलर अपडेट होने पर साफ़ हो जाता है। इस प्रकार, अस्वीकृत सूची पर ऐप पैकेज के बाद के अपडेट के लिए उपयोगकर्ता सहभागिता की आवश्यकता नहीं होगी।
अद्यतन स्वामी को संभालें और उपयोगकर्ता की सहमति प्राप्त करें
एंड्रॉइड 14 के साथ, भले ही किसी स्टोर या ऐप इंस्टॉलर के पास android.permission.INSTALL_PACKAGES
अनुमति हो, फिर भी उसे STATUS_PENDING_USER_ACTION
स्थिति को संभालने की आवश्यकता होती है यदि वह किसी ऐप को अपडेट करना चाहता है जिसके अपडेट का स्वामित्व किसी अन्य स्टोर या इंस्टॉलर के पास है।
InstallAPKSessionApi.java
नमूना ऐप यह भी दिखाता है कि STATUS_PENDING_USER_ACTION
कैसे संभालना है।
प्रीलोडेड ऐप्स के लिए स्वामित्व स्थापित करें
प्रीलोडेड ऐप्स आमतौर पर किसी विशिष्ट इंस्टॉलर के स्वामित्व में नहीं होते हैं। इसके बजाय प्रीलोडेड ऐप्स को सिस्टम कॉन्फ़िगरेशन का उपयोग करके एक नया मालिक सौंपा जाता है जैसा कि स्वामित्व को अपडेट करने के लिए ऑप्ट पैकेज में दिखाया गया है।