जब कोई APK अपलोड किया जाता है, तो यह ज़रूरी है कि वह Google Play के टारगेट एपीआई लेवल की ज़रूरी शर्तों को पूरा करे.
31 अगस्त, 2025 से:
- Google Play पर सबमिट किए जाने वाले सभी नए ऐप्लिकेशन और ऐप्लिकेशन के अपडेट को, Android 15 (एपीआई लेवल 35) या इसके बाद के वर्शन को टारगेट करना होगा. हालांकि, Wear OS, Android Automotive OS, और Android TV के ऐप्लिकेशन के लिए, Android 14 (एपीआई लेवल 34) या इसके बाद के वर्शन को टारगेट करना होगा.
- मौजूदा ऐप्लिकेशन को Android 14 (एपीआई लेवल 34) या उससे बाद के लेवल को टारगेट करना होगा, ताकि नए उपयोगकर्ता आपके ऐप्लिकेशन के टारगेट एपीआई लेवल से ज़्यादा के Android OS वर्शन वाले डिवाइसों पर उनका इस्तेमाल करना जारी रख सकें. Android 13 (एपीआई लेवल 33) या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन, सिर्फ़ आपके ऐप्लिकेशन के टारगेट एपीआई लेवल के बराबर या उससे नीचे के Android OS वर्शन वाले डिवाइसों के लिए उपलब्ध होंगे. इनमें Wear OS और Android TV के लिए, Android 12 (एपीआई लेवल 31) या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन भी शामिल हैं.
अगर आपको अपने ऐप्लिकेशन को अपडेट करने के लिए ज़्यादा समय चाहिए, तो 1 नवंबर, 2025 तक की समयसीमा बढ़ाने का अनुरोध किया जा सकता है. एक्सटेंशन फ़ॉर्म, इससे पहले Play Console में उपलब्ध हो जाएंगे.
ये ज़रूरी शर्तें, जिन ऐप्लिकेशन पर लागू नहीं होतीं:
- हमेशा निजी रहने वाले ऐप्लिकेशन, जो किसी खास संगठन में काम करने वाले उपयोगकर्ताओं के लिए ही बनाए गए हों.
नए एसडीके को टारगेट क्यों करना चाहिए?
Android के हर नए वर्शन में ऐसे बदलाव किए जाते हैं जो सुरक्षा और परफ़ॉर्मेंस को बेहतर बनाने के साथ-साथ Android के उपयोगकर्ता अनुभव को भी बेहतर बनाते हैं. इनमें से कुछ बदलाव सिर्फ़ उन ऐप्लिकेशन पर लागू होते हैं जो targetSdkVersion
मेनिफ़ेस्ट एट्रिब्यूट (इसे टारगेट एपीआई लेवल भी कहा जाता है) के ज़रिए, साफ़ तौर पर यह बताते हैं कि वे इस सुविधा के साथ काम करते हैं.
हाल के किसी एपीआई लेवल को टारगेट करने के लिए, अपना ऐप्लिकेशन कॉन्फ़िगर करने से यह पक्का हो जाता है कि उपयोगकर्ताओं को इन सुधारों का फ़ायदा मिलेगा. साथ ही, ऐसा करने पर, उपयोगकर्ता आपके ऐप्लिकेशन को अब भी Android के पुराने वर्शन पर चला पाएंगे. हाल ही के एपीआई लेवल को टारगेट करने से, आपका ऐप्लिकेशन प्लैटफ़ॉर्म की नई सुविधाओं का फ़ायदा भी ले सकता है. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलेगा. इसके अलावा, Android 10 (एपीआई लेवल 29) के बाद के वर्शन पर, जब उपयोगकर्ता पहली बार कोई ऐसा ऐप्लिकेशन खोलते हैं जो Android 5.1 (एपीआई लेवल 22) या इससे पहले के वर्शन को टारगेट करता है, तो उन्हें एक चेतावनी दिखती है.
इस दस्तावेज़ में, टारगेट एपीआई लेवल को अपडेट करने से जुड़ी ज़रूरी बातों के बारे में बताया गया है. इससे आपको Google Play की ज़रूरी शर्तों को पूरा करने में मदद मिलेगी. आपको जिस वर्शन पर माइग्रेट करना है उसके हिसाब से, यहां दिए गए निर्देश देखें.
Android 12 और इसके बाद के वर्शन (एपीआई लेवल 31) से नए वर्शन पर माइग्रेट करना
Android के नए वर्शन को टारगेट करने के लिए, अपने ऐप्लिकेशन को अपडेट करने के लिए, व्यवहार में हुए बदलावों की सूची देखें:
- Android 13 में हुए बदलाव
- Android 14 में व्यवहार से जुड़े बदलाव
- Android 15 में व्यवहार से जुड़े बदलाव
- Android 16 में हुए व्यवहार से जुड़े बदलाव
Android 11 (एपीआई लेवल 30) से Android 12 (एपीआई लेवल 31) पर माइग्रेट करना
सुरक्षा और अनुमतियां
- ब्लूटूथ: आपको
BLUETOOTH
औरBLUETOOTH_ADMIN
अनुमतियों के एलान कोBLUETOOTH_SCAN
,BLUETOOTH_ADVERTISE
याBLUETOOTH_CONNECT
अनुमतियों के एलान से बदलना होगा. अब आपको ब्लूटूथ से जुड़ी कार्रवाइयों के लिए,LOCATION
रनटाइम अनुमति के अनुरोध करने की ज़रूरत नहीं है. - जगह की जानकारी: उपयोगकर्ता, ऐप्लिकेशन से सिर्फ़ जगह की अनुमानित जानकारी पाने का अनुरोध कर सकते हैं.
ACCESS_FINE_LOCATION
का अनुरोध करते समय, आपकोACCESS_COARSE_LOCATION
अनुमति का अनुरोध करना होगा.- इंटेंट फ़िल्टर: अगर आपके ऐप्लिकेशन में गतिविधियां, सेवाएं या ब्रॉडकास्ट रिसीवर मौजूद हैं और वे इंटेंट फ़िल्टर का इस्तेमाल करते हैं, तो आपको इन कॉम्पोनेंट के लिए android:exported एट्रिब्यूट को साफ़ तौर पर एलान करना होगा.
- हाइबरनेशन: अगर ऐप्लिकेशन को कुछ समय तक इस्तेमाल नहीं किया जाता है, तो उन्हें हाइबरनेशन मोड में डाला जा सकता है. हाइबरनेशन मोड में, आपके ऐप्लिकेशन की रनटाइम अनुमतियां और कैश मेमोरी रीसेट हो जाती है. साथ ही, आपके पास टास्क या सूचनाएं चलाने का विकल्प नहीं होता. अपने ऐप्लिकेशन के हाइबरनेशन की स्थिति देखें.
- PendingIntent ऑब्जेक्ट की म्यूटेबिलिटी: आपको अपने ऐप्लिकेशन के बनाए गए हर PendingIntent ऑब्जेक्ट की म्यूटेबिलिटी की जानकारी देनी होगी.
उपयोगकर्ता अनुभव
- ज़रूरत के हिसाब से सूचनाएं: सूचनाओं में पसंद के मुताबिक कॉन्टेंट व्यू की सुविधा अब पूरी सूचना वाली जगह का इस्तेमाल नहीं करेगी. इसके बजाय, सिस्टम एक स्टैंडर्ड टेंप्लेट लागू करेगा. इस टेंप्लेट से यह पक्का होता है कि कस्टम सूचनाओं को सभी स्थितियों में, अन्य सूचनाओं की तरह ही सजाया गया हो. यह तरीका,
Notification.DecoratedCustomViewStyle
के तरीके से काफ़ी मिलता-जुलता है. - Android ऐप्लिकेशन लिंक की पुष्टि करने से जुड़े बदलाव: Android ऐप्लिकेशन लिंक की पुष्टि करने की सुविधा का इस्तेमाल करते समय, पक्का करें कि आपके इंटेंट फ़िल्टर में BROWSABLE कैटगरी शामिल हो और वे एचटीटीपीएस स्कीम के साथ काम करते हों.
परफ़ॉर्मेंस
फ़ोरग्राउंड सर्विस लॉन्च करने से जुड़ी पाबंदियां: Android 12 या इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन, बैकग्राउंड में चलते समय फ़ोरग्राउंड सर्विस शुरू नहीं कर सकते. हालांकि, कुछ खास मामलों में ऐसा किया जा सकता है. अगर कोई ऐप्लिकेशन बैकग्राउंड में चलते समय फ़ोरग्राउंड सेवा शुरू करने की कोशिश करता है, तो अपवाद होता है. हालांकि, कुछ खास मामलों में ऐसा नहीं होता.
जब आपका ऐप्लिकेशन बैकग्राउंड में चल रहा हो, तब तेज़ी से काम करने की सुविधा को शेड्यूल करने और शुरू करने के लिए, WorkManager का इस्तेमाल करें. समय के हिसाब से की जाने वाली उन कार्रवाइयों को पूरा करें जिनके लिए उपयोगकर्ता अनुरोध करता है. इसके लिए, एग्ज़ैक्ट अलार्म के अंदर फ़ोरग्राउंड सेवाओं को शुरू करें.
सूचनाओं के ज़रिए ऐप्लिकेशन लॉन्च करने से जुड़ी पाबंदियां: जब उपयोगकर्ता सूचनाओं पर टैप करते हैं, तो कुछ ऐप्लिकेशन, ऐप्लिकेशन के ऐसे कॉम्पोनेंट को लॉन्च करके जवाब देते हैं जो उपयोगकर्ता को दिखने वाली और उससे इंटरैक्ट करने वाली गतिविधि को शुरू करता है. ऐप्लिकेशन के इस कॉम्पोनेंट को सूचना ट्रैम्पोलिन कहा जाता है.
ऐप्लिकेशन को ऐसी सेवाओं या ब्रॉडकास्ट रिसीवर से गतिविधियां शुरू नहीं करनी चाहिए जिनका इस्तेमाल सूचनाओं को ट्रम्पोलिन की तरह इस्तेमाल करने के लिए किया जाता है. जब कोई उपयोगकर्ता सूचना या सूचना में मौजूद कार्रवाई वाले बटन पर टैप करता है, तब आपका ऐप्लिकेशन किसी सेवा या ब्रॉडकास्ट रिसीवर के अंदर
startActivity()
को कॉल नहीं कर सकता.
Android 12 (एपीआई लेवल 31) को टारगेट करने वाले ऐप्लिकेशन पर असर डालने वाले बदलावों के बारे में पूरी जानकारी देखें.
Android 11 (एपीआई लेवल 30) से पहले के वर्शन से माइग्रेट करना
वह Android वर्शन चुनें जिससे आपको माइग्रेट करना है:
Android 5 (एपीआई लेवल 21) पर माइग्रेट करना
नीचे दी गई हर रिलीज़ के लिए, व्यवहार में हुए बदलावों के बारे में बताने वाला पेज देखें. इससे यह पक्का किया जा सकेगा कि आपके ऐप्लिकेशन में, इन रिलीज़ में किए गए बदलावों को शामिल किया गया है:
अगले सेक्शन में दिए गए निर्देशों का पालन करके जारी रखें.
Android 6 (एपीआई लेवल 23) पर माइग्रेट करना
Android 6.0 और प्लैटफ़ॉर्म के इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन पर ये बातें लागू होती हैं:
-
-
खतरनाक अनुमतियां सिर्फ़ रनटाइम में दी जाती हैं. आपके यूज़र इंटरफ़ेस (यूआई) फ़्लो में, इन अनुमतियों को देने की सुविधा होनी चाहिए.
-
जहां भी मुमकिन हो, पक्का करें कि आपका ऐप्लिकेशन, अनुमति के अनुरोधों को अस्वीकार किए जाने की स्थिति को हैंडल करने के लिए तैयार हो. उदाहरण के लिए, अगर कोई व्यक्ति डिवाइस के जीपीएस को ऐक्सेस करने के अनुरोध को अस्वीकार करता है, तो पक्का करें कि आपके ऐप्लिकेशन के पास आगे बढ़ने का कोई दूसरा तरीका हो.
-
Android 6.0 (एपीआई लेवल 23) में किए गए सभी बदलावों की सूची देखने के लिए, प्लैटफ़ॉर्म के उस वर्शन के लिए काम करने के तरीके में बदलाव पेज देखें.
अगले सेक्शन में दिए गए निर्देशों का पालन करके जारी रखें.
Android 7 (एपीआई लेवल 24) पर माइग्रेट करना
Android 7.0 और प्लैटफ़ॉर्म के इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन पर ये बातें लागू होती हैं:
-
बैटरी बचाएं (डोज़) और ऐप स्टैंडबाय
बैटरी बचाने (डोज़) और ऐप्लिकेशन स्टैंडबाय के लिए ऑप्टिमाइज़ करना में बताए गए व्यवहारों के लिए डिज़ाइन किया गया है. इसमें कई प्लैटफ़ॉर्म रिलीज़ में किए गए छोटे-छोटे बदलाव शामिल हैं.
जब कोई डिवाइस, बैटरी बचाने (डोज़) और ऐप्लिकेशन स्टैंडबाय मोड में होता है, तो सिस्टम इस तरह काम करता है:
- नेटवर्क ऐक्सेस को सीमित करता है
- अलार्म, सिंक, और टास्क को कुछ समय के लिए रोकता है
- इस सेटिंग से, जीपीएस और वाई-फ़ाई स्कैन पर पाबंदी लगाई जाती है
- यह सामान्य प्राथमिकता वाले Firebase क्लाउड से मैसेज को सीमित करता है.
-
अनुमति में बदलाव
- सिस्टम, ऐप्लिकेशन की निजी डायरेक्ट्री के ऐक्सेस पर पाबंदी लगाता है.
-
अपने ऐप्लिकेशन के बाहर
file://
यूआरआई को दिखाने पर,FileUriExposedException
ट्रिगर होता है. अगर आपको अपने ऐप्लिकेशन से बाहर फ़ाइलें शेयर करनी हैं, तोFileProvider
लागू करें
-
सिस्टम, गैर-एनडीके लाइब्रेरी से लिंक करने की अनुमति नहीं देता.
Android 7.0 (एपीआई लेवल 24) में किए गए बदलावों की पूरी सूची देखने के लिए, प्लैटफ़ॉर्म के उस वर्शन के लिए काम करने के तरीके में बदलाव पेज देखें.
अगले सेक्शन में दिए गए निर्देशों का पालन करके जारी रखें.
Android 8 (एपीआई लेवल 26) पर माइग्रेट करना
Android 8.0 और प्लैटफ़ॉर्म के इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन पर, ये बातें लागू होती हैं:
-
बैकग्राउंड में ऐप्लिकेशन के चलने की सीमाएं
-
सिस्टम, फ़ोरग्राउंड में नहीं चल रहे ऐप्लिकेशन के लिए सेवाओं को सीमित कर देता है.
-
startService()
अब एक अपवाद दिखाता है, जब कोई ऐप्लिकेशनstartService()
के दौरान इसे चालू करने की कोशिश करता है. -
फ़ोरग्राउंड सेवाएं शुरू करने के लिए, किसी ऐप्लिकेशन को
startForeground()
औरstartForegroundService()
का इस्तेमाल करना होगा. - JobScheduler API में किए गए बदलावों को ध्यान से देखें. इनके बारे में Android 8.0 (एपीआई लेवल 26) के बदलावों के बारे में जानकारी देने वाले पेज पर बताया गया है.
- Firebase Cloud Messaging के लिए, Google Play services SDK का 10.2.1 वर्शन या इसके बाद का वर्शन ज़रूरी है.
- Firebase Cloud Messaging का इस्तेमाल करते समय, मैसेज की डिलीवरी, बैकग्राउंड में ऐप्लिकेशन के चलने की सीमाओं के मुताबिक होती है. जब मैसेज मिलने पर बैकग्राउंड में काम करना ज़रूरी हो, जैसे कि बैकग्राउंड में डेटा सिंक करना, तो आपके ऐप्लिकेशन को Firebase Job Dispatcher या JobIntentService का इस्तेमाल करके टास्क शेड्यूल करने चाहिए. ज़्यादा जानकारी के लिए, Firebase Cloud Messaging का दस्तावेज़ देखें.
-
-
इंप्लिसिट ब्रॉडकास्ट
-
इंप्लिसिट ब्रॉडकास्ट पर पाबंदी है. बैकग्राउंड इवेंट मैनेज करने के बारे में जानकारी पाने के लिए,
JobScheduler
एपीआई से जुड़ा दस्तावेज़ देखें.
-
इंप्लिसिट ब्रॉडकास्ट पर पाबंदी है. बैकग्राउंड इवेंट मैनेज करने के बारे में जानकारी पाने के लिए,
-
बैकग्राउंड में जगह की जानकारी ऐक्सेस करने के अनुरोध से जुड़ी सीमाएं
-
बैकग्राउंड में चल रहे ऐप्लिकेशन के पास, जगह की जानकारी के डेटा का सीमित ऐक्सेस होता है.
- Google Play services वाले डिवाइसों पर, समय-समय पर जगह की जानकारी के अपडेट पाने के लिए, फ़्यूज़्ड लोकेशन प्रोवाइडर का इस्तेमाल करें.
-
बैकग्राउंड में चल रहे ऐप्लिकेशन के पास, जगह की जानकारी के डेटा का सीमित ऐक्सेस होता है.
-
सिस्टम, फ़ोरग्राउंड में नहीं चल रहे ऐप्लिकेशन के लिए सेवाओं को सीमित कर देता है.
-
सूचना चैनल
- आपको हर चैनल के लिए, सूचना में रुकावट डालने वाली प्रॉपर्टी तय करनी चाहिए.
- सूचनाएं दिखाने के लिए, आपको उन्हें किसी चैनल को असाइन करना होगा.
-
इस प्लैटफ़ॉर्म के इस वर्शन पर,
NotificationCompat.Builder
काम करता है.
-
निजता
- ANDROID_ID को ऐप्लिकेशन साइनिंग कुंजी के हिसाब से स्कोप किया जाता है.
Android 8.0 (एपीआई लेवल 26) में किए गए सभी बदलावों की सूची देखने के लिए, प्लैटफ़ॉर्म के उस वर्शन के लिए बदलावों का व्यवहार पेज देखें.
Android 8 (एपीआई 26) से Android 9 (एपीआई 28) पर माइग्रेट करना
-
पावर मैनेजमेंट
- ऐप्लिकेशन स्टैंडबाय बकेट, ऐप्लिकेशन के इस्तेमाल के आधार पर बैकग्राउंड में ऐप्लिकेशन के काम करने से जुड़ी नई पाबंदियां लगाती हैं. जैसे, टाले गए काम, अलार्म, और ज़्यादा प्राथमिकता वाले मैसेज के लिए कोटा
- बैटरी सेवर की सुविधाओं में सुधार ऐप्लिकेशन के स्टैंडबाय मोड में रहने की सीमाओं को बढ़ाना
-
फ़ोरग्राउंड सेवा की अनुमति
- सामान्य अनुमति का अनुरोध करना होगा
FOREGROUND_SERVICE
(रनटाइम अनुमति नहीं)
- सामान्य अनुमति का अनुरोध करना होगा
-
निजता से जुड़े बदलाव
- बैकग्राउंड में सेंसर का सीमित ऐक्सेस
- कॉल लॉग के ऐक्सेस पर पाबंदी लगी है. अब यह
CALL_LOG
अनुमति ग्रुप में शामिल है - फ़ोन नंबर के ऐक्सेस पर पाबंदी लगी है. इसके लिए,
READ_CALL_LOG
अनुमति ज़रूरी है - वाई-फ़ाई की जानकारी को ऐक्सेस करने पर पाबंदी लगी है
Android 9.0 (एपीआई लेवल 28) में किए गए सभी बदलावों की सूची देखने के लिए, व्यवहार में हुए बदलाव देखें.
Android 9 (एपीआई लेवल 28) से Android 10 (एपीआई लेवल 29) पर माइग्रेट करना
-
फ़ुल-स्क्रीन इंटेंट वाली सूचनाएं
-
सामान्य अनुमति का अनुरोध करना होगा
USE_FULL_SCREEN_INTENT
(रनटाइम अनुमति नहीं).
-
सामान्य अनुमति का अनुरोध करना होगा
-
फ़ोल्ड किए जा सकने वाले डिवाइसों और बड़ी स्क्रीन वाले डिवाइसों के लिए सहायता
-
अब एक साथ कई ऐक्टिविटी "फिर से शुरू की गई" स्थिति में हो सकती हैं. हालांकि, फ़ोकस सिर्फ़ एक ऐक्टिविटी पर होता है.
-
इस बदलाव का असर
onResume()
औरonPause()
के व्यवहार पर पड़ेगा. -
लाइफ़साइकल का नया कॉन्सेप्ट "टॉपमोस्ट रीज़्यूम्ड", जिसे
onTopResumedActivityChanged()
की सदस्यता लेकर पता लगाया जा सकता है.- सिर्फ़ एक गतिविधि को "सबसे ऊपर फिर से शुरू किया गया" के तौर पर मार्क किया जा सकता है.
-
इस बदलाव का असर
-
जब
resizeableActivity
कोfalse
पर सेट किया जाता है, तो ऐप्लिकेशन,minAspectRatio
को भी सेट कर सकते हैं. इससे ऐप्लिकेशन, कम चौड़ाई वाले आसपेक्ट रेशियो पर अपने-आप लेटरबॉक्स हो जाता है.
-
अब एक साथ कई ऐक्टिविटी "फिर से शुरू की गई" स्थिति में हो सकती हैं. हालांकि, फ़ोकस सिर्फ़ एक ऐक्टिविटी पर होता है.
-
निजता से जुड़े बदलाव
-
स्कोप किया गया स्टोरेज
- बाहरी स्टोरेज का ऐक्सेस सिर्फ़ ऐप्लिकेशन के लिए खास तौर पर बनाई गई डायरेक्ट्री और कुछ खास तरह के मीडिया तक सीमित होता है. यह मीडिया, ऐप्लिकेशन ने बनाया होता है.
-
ऐप्लिकेशन के बैकग्राउंड में होने पर, जगह की जानकारी को ऐक्सेस करने पर पाबंदी लगाई गई है. इसके लिए,
ACCESS_BACKGROUND_LOCATION
अनुमति की ज़रूरत होती है. - रीसेट नहीं किए जा सकने वाले आइडेंटिफ़ायर, जैसे कि IMEI और सीरियल नंबर को ऐक्सेस करने पर पाबंदी.
-
शारीरिक गतिविधि की जानकारी को सीमित तौर पर ऐक्सेस किया जा सकता है. जैसे, उपयोगकर्ता के कदमों की संख्या. इसके लिए,
ACTIVITY_RECOGNITION
अनुमति की ज़रूरत होती है. -
टेलीफ़ोनी, ब्लूटूथ, और वाई-फ़ाई से जुड़े कुछ एपीआई का ऐक्सेस सीमित कर दिया गया है. इसके लिए,
ACCESS_FINE_LOCATION
अनुमति ज़रूरी है. -
वाई-फ़ाई सेटिंग के ऐक्सेस पर पाबंदी लगी है
- ऐप्लिकेशन अब सीधे तौर पर वाई-फ़ाई को चालू या बंद नहीं कर सकते. उन्हें सेटिंग पैनल का इस्तेमाल करके ऐसा करना होगा.
-
वाई-फ़ाई नेटवर्क से कनेक्शन शुरू करने पर पाबंदियां,
जिसके लिए
WifiNetworkSpecifier
याWifiNetworkSuggestion
का इस्तेमाल करना ज़रूरी है.
-
स्कोप किया गया स्टोरेज
Android 10 (एपीआई लेवल 29) से Android 11 (एपीआई लेवल 30) पर माइग्रेट करना
-
निजता
- स्कोप किए गए स्टोरेज को लागू करना : ऐप्लिकेशन को स्कोप किए गए स्टोरेज मॉडल को अपनाना चाहिए. इसमें, ऐप्लिकेशन के हिसाब से, मीडिया, और अन्य फ़ाइल टाइप को सेव किया जाता है. साथ ही, इन्हें खास तौर पर तय की गई जगहों का इस्तेमाल करके ऐक्सेस किया जाता है.
- अनुमतियों का अपने-आप रीसेट होना: अगर उपयोगकर्ता कुछ महीनों तक किसी ऐप्लिकेशन का इस्तेमाल नहीं करते हैं, तो सिस्टम उस ऐप्लिकेशन की संवेदनशील अनुमतियों को अपने-आप रीसेट कर देता है. इससे ज़्यादातर ऐप्लिकेशन पर कोई असर नहीं पड़ेगा. अगर आपका ऐप्लिकेशन मुख्य रूप से बैकग्राउंड में काम करता है और उपयोगकर्ता के इंटरैक्शन के बिना काम करता है, तो उपयोगकर्ताओं से ऑटो रीसेट की सुविधा बंद करने के लिए कहा जा सकता है.
- बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति: ऐप्लिकेशन को फ़ोरग्राउंड और बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति के लिए अलग-अलग अनुरोध करना होगा. बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की अनुमति सिर्फ़ ऐप्लिकेशन की सेटिंग में जाकर दी जा सकती है. इसके लिए, रनटाइम अनुमति वाले डायलॉग का इस्तेमाल नहीं किया जा सकता.
-
पैकेज की जानकारी देखने की क्षमता: जब कोई ऐप्लिकेशन, डिवाइस पर इंस्टॉल किए गए ऐप्लिकेशन और सेवाओं की सूची के लिए क्वेरी करता है, तो दिखाई गई सूची को फ़िल्टर किया जाता है.
- अगर आपको टेक्स्ट को सुनने की सुविधा या बोली को पहचानने की सुविधा का इस्तेमाल करना है, तो आपको मेनिफ़ेस्ट फ़ाइल में सेवाओं के लिए क्वेरी एलिमेंट जोड़ने होंगे.
-
सुरक्षा
- कंप्रेस की गई `resource.arsc` फ़ाइलों का इस्तेमाल अब नहीं किया जा सकता
- अब APK सिग्नेचर स्कीम v2 का इस्तेमाल करना ज़रूरी है. पुराने सिस्टम के साथ काम करने की सुविधा के लिए, डेवलपर को APK सिग्नेचर स्कीम v1 का इस्तेमाल करके भी साइन करना जारी रखना चाहिए.
- ऐसे इंटरफ़ेस का इस्तेमाल करने पर पाबंदी जो एसडीके टूल में उपलब्ध नहीं है. एपीआई लेवल 30 को टारगेट करने वाले ऐप्लिकेशन के लिए, गैर-एसडीके इंटरफ़ेस का इस्तेमाल करने का सुझाव नहीं दिया जाता. ऐसा इसलिए, क्योंकि इनमें से कुछ गैर-एसडीके इंटरफ़ेस अब ब्लॉक कर दिए गए हैं. ब्लॉक किए गए गैर-एसडीके इंटरफ़ेस की पूरी सूची देखने के लिए, Android 11 में अब ब्लॉक किए गए गैर-एसडीके इंटरफ़ेस देखें.
Android 11 (एपीआई लेवल 30) में किए गए सभी बदलावों की सूची देखने के लिए, काम करने के तरीके में बदलाव पेज पर जाएं.
पिछले सेक्शन में दिए गए निर्देशों का पालन करके, एपीआई 31 पर अपडेट करना जारी रखें.
अपने ऐप्लिकेशन को बेहतर बनाना
अपने ऐप्लिकेशन के टारगेट एपीआई लेवल को अपडेट करते समय, हाल ही में लॉन्च हुई प्लैटफ़ॉर्म की सुविधाओं का इस्तेमाल करें. इससे आपके ऐप्लिकेशन बेहतर बनेंगे और उपयोगकर्ताओं को भी अच्छा अनुभव मिलेगा.
- कैमरे का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, CameraX का इस्तेमाल करें. यह बीटा वर्शन में उपलब्ध है.
- सबसे सही तरीकों का पालन करने, छोटे-मोटे बदलाव वाले कोड लिखने से बचने, और मुश्किल टास्क आसान बनाने के लिए, Jetpack कॉम्पोनेंट का इस्तेमाल करें. इससे, आपको उस कोड पर फ़ोकस करने में मदद मिलेगी जो आपके लिए ज़रूरी है.
- कम कोड में, तेज़ी से बेहतर ऐप्लिकेशन लिखने के लिए Kotlin का इस्तेमाल करें.
- पक्का करें कि आपने निजता से जुड़ी ज़रूरी शर्तों का पालन किया है. साथ ही, सबसे सही तरीके भी अपनाए हैं.
- अपने ऐप्लिकेशन में गहरे रंग वाली थीम इस्तेमाल करने की सुविधा जोड़ें.
- अपने ऐप्लिकेशन में जेस्चर नेविगेशन की सुविधा जोड़ें.
- अपने ऐप्लिकेशन को Google Cloud Messaging (GCM) से Firebase Cloud Messaging के नए वर्शन पर माइग्रेट करें.
- विंडो को बेहतर तरीके से मैनेज करने की सुविधा का फ़ायदा पाएं.
- हार्डवेयर में हुई हाल ही की तरक्की का फ़ायदा पाने के लिए, बड़े आसपेक्ट रेशियो (16:9 से ज़्यादा) के साथ काम करता है. पक्का करें कि आपका ऐप्लिकेशन, स्क्रीन पर मौजूद जगह के हिसाब से अपने साइज़ को बदलता हो. ज़्यादा से ज़्यादा आसपेक्ट रेशियो का एलान सिर्फ़ तब करें, जब कोई और विकल्प न हो. ज़्यादा से ज़्यादा आसपेक्ट रेशियो के बारे में ज़्यादा जानने के लिए, स्क्रीन पर ऐप्लिकेशन के काम करने से जुड़ी पाबंदियों के बारे में जानकारी देना लेख पढ़ें.
- अपने ऐप्लिकेशन में एक साथ कई विंडो इस्तेमाल करने की सुविधा जोड़ें. इससे ऐप्लिकेशन की प्रॉडक्टिविटी बढ़ेगी और एक साथ कई डिसप्ले मैनेज किए जा सकेंगे.
- अगर ऐप्लिकेशन को छोटा करने पर, उपयोगकर्ता अनुभव बेहतर होता है, तो पिक्चर में पिक्चर मोड की सुविधा जोड़ें.
- डिसप्ले कटआउट वाले डिवाइसों के लिए ऑप्टिमाइज़ करें.
- स्टेटस बार की ऊंचाई का अनुमान न लगाएं. इसके बजाय,
WindowInsets
औरView.OnApplyWindowInsetsListener
का इस्तेमाल करें. ज़्यादा जानने के लिए, droidcon NYC 2017 का वीडियो देखें. - यह न मान लें कि ऐप्लिकेशन के पास पूरी विंडो है. इसके बजाय,
View.getLocationOnScreen()
का इस्तेमाल करने के बजाय,View.getLocationInWindow()
का इस्तेमाल करके इसकी जगह की पुष्टि करें. *MotionEvent
को हैंडल करते समय,MotionEvent.getX()
औरMotionEvent.getY()
का इस्तेमाल करें.MotionEvent.getRawX()
औरMotionEvent.getRawY()
का इस्तेमाल न करें.
अपने एसडीके और लाइब्रेरी देखें और उन्हें अपडेट करें
पक्का करें कि तीसरे पक्ष के SDK टूल की डिपेंडेंसी, API 31 के साथ काम करती हों: एसडीके की सेवा देने वाली कुछ कंपनियां, इसे अपने मेनिफ़ेस्ट में पब्लिश करती हैं. हालांकि, अन्य कंपनियों के लिए इसकी ज़्यादा जांच करनी होगी. अगर एपीआई 31 के साथ काम न करने वाले एसडीके का इस्तेमाल किया जा रहा है, तो एसडीके टूल की सेवा देने वाली कंपनी के साथ मिलकर इस समस्या को ठीक करें.
इसके अलावा, ध्यान दें कि आपके ऐप्लिकेशन या गेम के targetSdkVersion
, Android प्लैटफ़ॉर्म की निजी लाइब्रेरी के ऐक्सेस पर पाबंदी लगाई जा सकती है. ज़्यादा जानकारी के लिए, NDK ऐप्लिकेशन को प्लैटफ़ॉर्म लाइब्रेरी से लिंक करना लेख पढ़ें.
आपको Android Support Library के उस वर्शन में मौजूद पाबंदियों की भी पुष्टि करनी चाहिए जिसका इस्तेमाल किया जा रहा है. हमेशा की तरह, आपको यह पक्का करना होगा कि Android Support Library का मुख्य वर्शन और आपके ऐप्लिकेशन का compileSdkVersion
एक-दूसरे के साथ काम करता हो.
हमारा सुझाव है कि आप targetSdkVersion
को Support Library के मुख्य वर्शन से कम या उसके बराबर चुनें. हमारा सुझाव है कि आप हाल ही के ऐसे Support Library वर्शन पर अपडेट करें जो आपके ऐप्लिकेशन के साथ काम करता हो. इससे आपको नई सुविधाओं का फ़ायदा मिलेगा और गड़बड़ियों को ठीक करने में मदद मिलेगी.
अपने ऐप्लिकेशन का परीक्षण करें
अपने ऐप्लिकेशन के एपीआई लेवल और सुविधाओं को अपडेट करने के बाद, आपको इस्तेमाल के कुछ मुख्य उदाहरणों की जांच करनी चाहिए. यहां दिए गए सुझाव पूरी तरह से नहीं दिए गए हैं, लेकिन इनका मकसद आपकी टेस्टिंग प्रोसेस में मदद करना है. हमारा सुझाव है कि आप इनकी जांच करें:
- आपका ऐप्लिकेशन, एपीआई 29 के साथ बिना किसी गड़बड़ी या चेतावनी के कंपाइल होता हो.
आपके ऐप्लिकेशन में ऐसी रणनीति होनी चाहिए जिसके तहत, अनुमति के अनुरोधों को अस्वीकार करने पर उपयोगकर्ता को अनुमति के लिए प्रॉम्प्ट किया जा सके. ऐसा करने के लिए:
- अपने ऐप्लिकेशन की 'ऐप्लिकेशन की जानकारी' स्क्रीन पर जाएं और हर अनुमति को बंद करें.
- ऐप्लिकेशन खोलें और पक्का करें कि वह क्रैश न हो रहा हो.
- इस्तेमाल के मुख्य उदाहरणों की जांच करें और पक्का करें कि ज़रूरी अनुमतियों के लिए फिर से प्रॉम्प्ट किया गया हो.
डोज़ मोड को सही तरीके से मैनेज करता है और कोई गड़बड़ी नहीं होती.
- adb का इस्तेमाल करके, अपने टेस्ट डिवाइस को Doze मोड में रखें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
- इस्तेमाल के उन सभी उदाहरणों की जांच करें जिनसे Firebase Cloud Messaging के मैसेज ट्रिगर होते हैं.
- अलार्म या जॉब का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- बैकग्राउंड सेवाओं पर निर्भरता कम करें.
- अपने ऐप्लिकेशन को ऐप्लिकेशन स्टैंडबाय मोड में सेट करना
- इस्तेमाल के उन सभी उदाहरणों की जांच करें जिनसे Firebase Cloud Messaging के मैसेज ट्रिगर होते हैं.
- अलार्म का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- adb का इस्तेमाल करके, अपने टेस्ट डिवाइस को Doze मोड में रखें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
यह कुकी, नई फ़ोटो / वीडियो लेने की प्रोसेस को मैनेज करती है
- जांच करें कि आपका ऐप्लिकेशन, पाबंदी वाली
ACTION_NEW_PICTURE
औरACTION_NEW_VIDEO
ब्रॉडकास्ट को सही तरीके से हैंडल करता हो. इसका मतलब है कि उन्हें JobScheduler जॉब में ले जाया गया हो. - पक्का करें कि इन इवेंट पर निर्भर रहने वाले इस्तेमाल के सभी ज़रूरी उदाहरण अब भी काम कर रहे हों.
- जांच करें कि आपका ऐप्लिकेशन, पाबंदी वाली
यह अन्य ऐप्लिकेशन के साथ फ़ाइलें शेयर करने की सुविधा देता है - ऐसे किसी भी इस्तेमाल के उदाहरण की जांच करें जो किसी अन्य ऐप्लिकेशन के साथ फ़ाइल डेटा शेयर करता है. भले ही, वह ऐप्लिकेशन एक ही डेवलपर का हो
- जांच करें कि कॉन्टेंट दूसरे ऐप्लिकेशन में दिख रहा हो और उससे ऐप्लिकेशन क्रैश न हो रहे हों.
ज़्यादा जानकारी
Google Play Console में ईमेल पाने की सुविधा के लिए ऑप्ट-इन करें, ताकि हम आपको Android और Google Play से जुड़े अहम अपडेट और सूचनाएं भेज सकें. इनमें पार्टनर के लिए हर महीने जारी होने वाला हमारा न्यूज़लेटर भी शामिल है.