जब कोई APK अपलोड किया जाता है, तो यह ज़रूरी है कि वह Google Play के टारगेट एपीआई लेवल से जुड़ी शर्तें पूरी करे.
31 अगस्त, 2026 से:
- Google Play पर सबमिट किए जाने वाले सभी नए ऐप्लिकेशन और ऐप्लिकेशन के अपडेट को, Android 16 (एपीआई लेवल 36) या इसके बाद के वर्शन को टारगेट करना होगा. हालांकि, Wear OS और Android Automotive OS के ऐप्लिकेशन के लिए, Android 15 (एपीआई लेवल 35) या इसके बाद के वर्शन को टारगेट करना होगा. इसके अलावा, Android TV और Android XR के ऐप्लिकेशन के लिए, Android 14 (एपीआई लेवल 34) या इसके बाद के वर्शन को टारगेट करना होगा.
- आपको सभी मौजूदा ऐप्लिकेशन में Android 15 (एपीआई लेवल 35) या इसके बाद के वर्शन को टारगेट करना होगा, ताकि नए उपयोगकर्ता आपके ऐप्लिकेशन के टारगेट एपीआई लेवल से ज़्यादा के Android OS वर्शन वाले डिवाइसों पर उनका इस्तेमाल करना जारी रख सकें. Android 14 (एपीआई लेवल 34) या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन, सिर्फ़ आपके ऐप्लिकेशन के टारगेट एपीआई लेवल के बराबर या उससे नीचे के Android OS वर्शन वाले डिवाइसों के लिए उपलब्ध होंगे. इनमें Wear OS, Android TV, और Android XR के लिए Android 13 (एपीआई लेवल 33) या इससे पहले के वर्शन और Android Automotive OS के लिए Android 12 (एपीआई लेवल 31) या इससे पहले के वर्शन को टारगेट करने वाले ऐप्लिकेशन भी शामिल हैं.
अगर आपको ऐप्लिकेशन अपडेट करने के लिए ज़्यादा समय चाहिए, तो आपके पास 1 नवंबर, 2026 तक के लिए एक्सटेंशन का अनुरोध करने का विकल्प है. इस साल के आखिर में, 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 ऑब्जेक्ट के लिए, म्यूटेबिलिटी की जानकारी देनी होगी.
उपयोगकर्ता अनुभव
- कस्टम सूचनाएं: कस्टम कॉन्टेंट व्यू वाली सूचनाएं, अब सूचना वाले पूरे हिस्से का इस्तेमाल नहीं करेंगी. इसके बजाय, सिस्टम एक स्टैंडर्ड टेंप्लेट लागू करेगा. इस टेंप्लेट से यह पक्का होता है कि कस्टम सूचनाओं में भी अन्य सूचनाओं की तरह ही सजावट हो. यह तरीका,
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 क्लाउड से मैसेज के लिए, Google Play services SDK का वर्शन 10.2.1 या इसके बाद का वर्शन ज़रूरी है.
- Firebase क्लाउड से मैसेज का इस्तेमाल करने पर, मैसेज की डिलीवरी बैकग्राउंड में एक्ज़ीक्यूशन की सीमाओं के हिसाब से होती है. जब मैसेज मिलने पर बैकग्राउंड में काम करना ज़रूरी हो, जैसे कि बैकग्राउंड में डेटा सिंक करना, तो आपके ऐप्लिकेशन को Firebase Job Dispatcher या JobIntentService का इस्तेमाल करके, जॉब शेड्यूल करने चाहिए. ज़्यादा जानकारी के लिए, Firebase क्लाउड से मैसेज का दस्तावेज़ देखें.
-
-
इंप्लिसिट ब्रॉडकास्ट
-
इंप्लिसिट ब्रॉडकास्ट पर पाबंदी लगाई गई है. बैकग्राउंड इवेंट को मैनेज करने के बारे में जानकारी पाने के लिए,
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अनुमति की ज़रूरत है. - रीसेट न किए जा सकने वाले आइडेंटिफ़ायर, जैसे कि आईएमईआई और सीरियल नंबर को ऐक्सेस करने पर पाबंदी लगाई गई है.
-
शारीरिक गतिविधि की जानकारी का ऐक्सेस सीमित है. जैसे, उपयोगकर्ता के कदमों की संख्या. इसके लिए,
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 क्लाउड से मैसेज (GCM) से, Firebase क्लाउड से मैसेज के नए वर्शन पर माइग्रेट करें.
- विंडो मैनेज करने की बेहतर सुविधा का फ़ायदा लें.
- हार्डवेयर में हाल ही में हुई तरक्की का फ़ायदा लेने के लिए, बड़े आसपेक्ट रेशियो (16:9 से ज़्यादा) के साथ काम करें. पक्का करें कि आपके ऐप्लिकेशन का साइज़, स्क्रीन पर उपलब्ध जगह के हिसाब से बदल जाए. ज़्यादा से ज़्यादा आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) का एलान सिर्फ़ आखिरी विकल्प के तौर पर करें. ज़्यादा से ज़्यादा आसपेक्ट रेशियो के बारे में ज़्यादा जानने के लिए, स्क्रीन के लिए तय की गई पाबंदियों के बारे में जानकारी दें लेख पढ़ें.
- अपने ऐप्लिकेशन में मल्टी-विंडो की सुविधा जोड़ें, ताकि प्रॉडक्टिविटी बढ़ाई जा सके और एक से ज़्यादा डिसप्ले मैनेज किए जा सकें.
- अगर ऐप्लिकेशन को छोटा करके इस्तेमाल करने की सुविधा से ऐप्लिकेशन इस्तेमाल करने का अनुभव बेहतर होता है, तो पिक्चर में पिक्चर सुविधा जोड़ें.
- डिसप्ले कटआउट वाले डिवाइसों के लिए ऑप्टिमाइज़ करना.
- स्टेटस बार की ऊंचाई का अनुमान न लगाएं. इसके बजाय,
WindowInsetsऔरView.OnApplyWindowInsetsListenerका इस्तेमाल करें. ज़्यादा जानने के लिए, droidcon NYC 2017 वीडियो देखें. - यह न मानें कि ऐप्लिकेशन के पास पूरी विंडो है. इसके बजाय,
View.getLocationOnScreen()का नहीं, बल्किView.getLocationInWindow()का इस्तेमाल करके इसकी जगह की पुष्टि करें. *MotionEventको हैंडल करते समय,MotionEvent.getX()औरMotionEvent.getY()का इस्तेमाल करें, न किMotionEvent.getRawX(),MotionEvent.getRawY()का.
अपने एसडीके और लाइब्रेरी देखना और उन्हें अपडेट करना
पक्का करें कि तीसरे पक्ष के SDK टूल की डिपेंडेंसी, एपीआई 31 के साथ काम करती हों: SDK टूल की सेवा देने वाली कुछ कंपनियां इसे अपने मेनिफ़ेस्ट में पब्लिश करती हैं. अन्य कंपनियों को ज़्यादा जांच की ज़रूरत होगी. अगर आपके ऐप्लिकेशन में किसी ऐसे एसडीके का इस्तेमाल किया जा रहा है जो एपीआई लेवल 31 के साथ काम नहीं करता, तो एसडीके बनाने वाली कंपनी से संपर्क करके इस समस्या को जल्द से जल्द हल करें.
इसके अलावा, ध्यान दें कि आपके ऐप्लिकेशन या गेम का targetSdkVersion, निजी Android प्लैटफ़ॉर्म लाइब्रेरी के ऐक्सेस को सीमित कर सकता है. ज़्यादा जानकारी के लिए, NDK Apps Linking to Platform Libraries देखें.
आपको Android सपोर्ट लाइब्रेरी के उस वर्शन पर मौजूद पाबंदियों की भी पुष्टि करनी चाहिए जिसका इस्तेमाल किया जा रहा है. हमेशा की तरह, आपको यह पक्का करना होगा कि Android सपोर्ट लाइब्रेरी का मेजर वर्शन और आपके ऐप्लिकेशन का compileSdkVersion, एक-दूसरे के साथ काम करते हों.
हमारा सुझाव है कि आप ऐसा targetSdkVersion चुनें जो Support Library के मेजर वर्शन से छोटा या उसके बराबर हो. हमारा सुझाव है कि आप अपने ऐप्लिकेशन को सपोर्ट लाइब्रेरी के नए वर्शन पर अपडेट करें. इससे आपको गड़बड़ियां ठीक करने वाले अपडेट और नई सुविधाएं मिलेंगी.
अपने ऐप्लिकेशन का परीक्षण करें
अपने ऐप्लिकेशन के एपीआई लेवल और सुविधाओं को ज़रूरत के मुताबिक अपडेट करने के बाद, आपको इस्तेमाल के कुछ मुख्य उदाहरणों की जांच करनी चाहिए. यहां दिए गए सुझावों में सभी चीज़ें शामिल नहीं हैं. हालांकि, इनका मकसद टेस्टिंग की प्रोसेस में आपकी मदद करना है. हमारा सुझाव है कि आप इनकी जांच करें:
- आपका ऐप्लिकेशन, बिना किसी गड़बड़ी या चेतावनी के एपीआई लेवल 29 के साथ काम करता हो.
आपके ऐप्लिकेशन में ऐसी रणनीति हो जो उपयोगकर्ता के अनुमति के अनुरोधों को अस्वीकार करने पर काम करे. साथ ही, उपयोगकर्ता को अनुमतियों के लिए प्रॉम्प्ट करे. इसके लिए:
- अपने ऐप्लिकेशन की जानकारी वाली स्क्रीन पर जाएं और हर अनुमति को बंद करें.
- ऐप्लिकेशन खोलें और पक्का करें कि वह क्रैश न हो.
- इस्तेमाल के मुख्य उदाहरणों की जांच करें और पक्का करें कि ज़रूरी अनुमतियों के लिए फिर से अनुरोध किया जाए.
यह बैटरी बचाने की सुविधा को बिना किसी गड़बड़ी के और उम्मीद के मुताबिक मैनेज करता है.
- adb का इस्तेमाल करके, अपने टेस्ट डिवाइस को बैटरी बचाने वाले मोड में सेट करें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
- इस्तेमाल के ऐसे उदाहरणों की जांच करें जो Firebase क्लाउड से मैसेज को ट्रिगर करते हैं.
- अलार्म या जॉब का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- बैकग्राउंड में चलने वाली सेवाओं पर निर्भरता खत्म करें.
- अपने ऐप्लिकेशन को ऐप स्टैंडबाय मोड में सेट करना
- इस्तेमाल के ऐसे उदाहरणों की जांच करें जो Firebase क्लाउड से मैसेज को ट्रिगर करते हैं.
- अलार्म का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- adb का इस्तेमाल करके, अपने टेस्ट डिवाइस को बैटरी बचाने वाले मोड में सेट करें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
नई फ़ोटो / वीडियो लेने की सुविधा को मैनेज करता है
- देखें कि आपका ऐप्लिकेशन, प्रतिबंधित
ACTION_NEW_PICTUREऔरACTION_NEW_VIDEOब्रॉडकास्ट को सही तरीके से मैनेज करता है (यानी कि JobScheduler जॉब पर ले जाता है). - पक्का करें कि इन इवेंट पर निर्भर कोई भी ज़रूरी इस्तेमाल का उदाहरण अब भी काम कर रहा हो.
- देखें कि आपका ऐप्लिकेशन, प्रतिबंधित
अन्य ऐप्लिकेशन के साथ फ़ाइलें शेयर करने की सुविधा को मैनेज करता है - इस्तेमाल के ऐसे किसी भी उदाहरण की जांच करें जिसमें फ़ाइल का डेटा किसी अन्य ऐप्लिकेशन के साथ शेयर किया जाता है. भले ही, वह ऐप्लिकेशन उसी डेवलपर का हो
- जांच करें कि कॉन्टेंट दूसरे ऐप्लिकेशन में दिख रहा हो और क्रैश न हो.
ज़्यादा जानकारी
Google Play Console में ईमेल पाने की सुविधा के लिए ऑप्ट इन करें, ताकि हम आपको Android और Google Play से जुड़े अहम अपडेट और सूचनाएं भेज सकें. इनमें हर महीने पार्टनर को भेजा जाने वाला न्यूज़लेटर भी शामिल है.