जब कोई APK अपलोड किया जाता है, तो उसे Google Play के टारगेट एपीआई लेवल की ज़रूरी शर्तों को पूरा करना चाहिए.
31 अगस्त, 2024 से:
- Google Play पर सबमिट किए जाने वाले सभी नए ऐप्लिकेशन और ऐप्लिकेशन के अपडेट में, Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करना होगा. हालांकि, Wear OS और Android TV ऐप्लिकेशन के लिए, Android 13 (एपीआई लेवल 33) या उसके बाद के वर्शन को टारगेट करना होगा.
- मौजूदा ऐप्लिकेशन को Android 13 (एपीआई लेवल 33) या उसके बाद के वर्शन को टारगेट करना होगा, ताकि नए उपयोगकर्ता आपके ऐप्लिकेशन के टारगेट एपीआई लेवल से ज़्यादा के Android OS वर्शन वाले डिवाइसों पर उनका इस्तेमाल करना जारी रख सकें. Android 12 (एपीआई लेवल 31) या इससे पहले के वर्शन (Wear OS के लिए Android 10 (एपीआई लेवल 29) या इससे पहले के वर्शन और Android TV के लिए Android 11 (एपीआई लेवल 30) या इससे पहले के वर्शन) को टारगेट करने वाले ऐप्लिकेशन, सिर्फ़ आपके ऐप्लिकेशन के टारगेट एपीआई लेवल के बराबर या उससे नीचे के Android OS वर्शन वाले डिवाइसों के लिए उपलब्ध होंगे.
अगर आपको अपने ऐप्लिकेशन को अपडेट करने के लिए ज़्यादा समय चाहिए, तो 1 नवंबर, 2024 तक की समयसीमा बढ़ाने का अनुरोध किया जा सकता है. एक्सटेंशन फ़ॉर्म, इससे पहले Play Console में उपलब्ध हो जाएंगे.
ये ज़रूरी शर्तें, जिन ऐप्लिकेशन पर लागू नहीं होतीं:
- हमेशा निजी रहने वाले ऐसे ऐप्लिकेशन जो किसी खास संगठन में काम करने वाले उपयोगकर्ताओं के लिए ही बनाए गए हों.
- ऐसे ऐप्लिकेशन जो Android Automotive OS को टारगेट करते हैं या जिनमें Android Automotive OS को टारगेट करने वाले APK शामिल किए जाते हैं.
नए SDK टूल को टारगेट क्यों करना चाहिए?
Android के हर नए वर्शन में ऐसे बदलाव किए जाते हैं जो सुरक्षा और परफ़ॉर्मेंस
को बेहतर बनाते हैं और Android उपयोगकर्ता अनुभव को बेहतर बनाते हैं. इनमें से कुछ बदलाव सिर्फ़ उन ऐप्लिकेशन पर लागू होते हैं जो अपने targetSdkVersion
मेनिफ़ेस्ट एट्रिब्यूट (जिसे टारगेट एपीआई लेवल भी कहा जाता है) के ज़रिए, साफ़ तौर पर यह एलान करते हैं कि वे इस सुविधा के साथ काम करते हैं.
हाल के किसी एपीआई लेवल को टारगेट करने के लिए, अपना ऐप्लिकेशन कॉन्फ़िगर करने से यह पक्का हो जाता है कि उपयोगकर्ताओं को इन सुधारों का फ़ायदा मिल सकता है. साथ ही, आपका ऐप्लिकेशन अब भी Android के पुराने वर्शन पर चल सकता है. हाल के किसी एपीआई लेवल को टारगेट करने से, आपके ऐप्लिकेशन को प्लैटफ़ॉर्म की नई सुविधाओं का फ़ायदा भी मिलता है. इससे आपके उपयोगकर्ताओं को बेहतर अनुभव मिलता है. इसके अलावा, Android 10 (एपीआई लेवल 29) के बाद, अगर कोई ऐप्लिकेशन Android 5.1 (एपीआई लेवल 22) या उससे पहले के वर्शन को टारगेट करता है, तो उपयोगकर्ताओं को पहली बार ऐप्लिकेशन शुरू करने पर चेतावनी दिखती है.
इस दस्तावेज़ में उन अहम बातों के बारे में बताया गया है जिन्हें आपको Google Play की ज़रूरी शर्त को पूरा करने के लिए, अपने टारगेट एपीआई लेवल को अपडेट करते समय जानना चाहिए. आपको जिस वर्शन पर माइग्रेट करना है उसके आधार पर, नीचे दिए गए सेक्शन में दिए गए निर्देश देखें.
Android 12 और उसके बाद वाले वर्शन (एपीआई लेवल 31) से, नए वर्शन में माइग्रेट करें
Android के नए वर्शन को टारगेट करने के लिए, अपने ऐप्लिकेशन को अपडेट करें. इसके लिए, व्यवहार में हुए बदलावों की सूची में दिए गए निर्देशों का पालन करें:
Android 11 (एपीआई लेवल 30) से Android 12 (एपीआई लेवल 31) पर माइग्रेट करना
सुरक्षा और अनुमतियां
- Bluetooth: आपको
BLUETOOTH
औरBLUETOOTH_ADMIN
अनुमतियों के एलान कोBLUETOOTH_SCAN
,BLUETOOTH_ADVERTISE
याBLUETOOTH_CONNECT
अनुमतियों से बदलना होगा. अब आपको ब्लूटूथ से जुड़े कामों के लिए,LOCATION
रनटाइम की अनुमति के अनुरोध करने की ज़रूरत नहीं है. - जगह की जानकारी: उपयोगकर्ता, ऐप्लिकेशन से सिर्फ़ जगह की अनुमानित जानकारी पाने का अनुरोध कर सकते हैं.
ACCESS_FINE_LOCATION
का अनुरोध करने पर, आपकोACCESS_COARSE_LOCATION
की अनुमति का अनुरोध करना होगा.- इंटेंट फ़िल्टर: अगर आपके ऐप्लिकेशन में इंटेंट फ़िल्टर का इस्तेमाल करने वाली गतिविधियां, सेवाएं या ब्रॉडकास्ट रिसीवर शामिल हैं, तो आपको इन कॉम्पोनेंट के लिए android:exported एट्रिब्यूट के बारे में साफ़ तौर पर बताना होगा.
- हाइबरनेशन मोड: अगर किसी ऐप्लिकेशन का इस्तेमाल कुछ समय तक नहीं किया जाता है, तो उसे हाइबरनेशन मोड में डाला जा सकता है. हाइबरनेट मोड में, आपके ऐप्लिकेशन की रनटाइम अनुमतियां और कैश मेमोरी रीसेट हो जाती हैं. साथ ही, न तो कोई नौकरी चलाई जा सकती है और न ही कोई सूचना भेजी जा सकती है. ऐप्लिकेशन के hibernate होने की स्थिति देखी जा सकती है.
- PendingIntent की म्यूटेबिलिटी: आपको अपने ऐप्लिकेशन के बनाए गए हर PendingIntent ऑब्जेक्ट के लिए, म्यूटेबिलिटी की जानकारी देनी होगी.
उपयोगकर्ता अनुभव
- पसंद के मुताबिक सूचनाएं: पसंद के मुताबिक कॉन्टेंट व्यू वाली सूचनाएं अब पूरी सूचना वाली जगह का इस्तेमाल नहीं करेंगी. इसके बजाय, सिस्टम एक स्टैंडर्ड टेंप्लेट लागू करेगा. इस टेंप्लेट की मदद से, यह पक्का किया जाता है कि पसंद के मुताबिक मिलने वाली सूचनाओं की सजावट, सभी राज्यों के लिए बाकी सूचनाओं की तरह ही हो. यह व्यवहार करीब-करीब
Notification.DecoratedCustomViewStyle
जैसा ही होता है. - Android ऐप्लिकेशन लिंक की पुष्टि करने के तरीके में बदलाव: Android ऐप्लिकेशन लिंक की पुष्टि करने के लिए, पक्का करें कि आपके इंटेंट फ़िल्टर में ब्राउज़ की जा सकने वाली कैटगरी शामिल हो और वे एचटीटीपीएस स्कीम के साथ काम करते हों.
परफ़ॉर्मेंस
फ़ोरग्राउंड सेवा लॉन्च करने से जुड़ी पाबंदियां: 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 Cloud Messaging मैसेज पर पाबंदी लगाता है.
-
अनुमति में बदलाव
- सिस्टम, ऐप्लिकेशन के लिए बनाई गई निजी डायरेक्ट्री के ऐक्सेस पर पाबंदी लगाता है.
-
अपने ऐप्लिकेशन के बाहर
file://
यूआरआई को एक्सपोज़ करने पर,FileUriExposedException
ट्रिगर होता है. अगर आपको अपने ऐप्लिकेशन से बाहर फ़ाइलें शेयर करनी हैं, तोFileProvider
को लागू करें
-
सिस्टम, NDK लाइब्रेरी के अलावा किसी दूसरी लाइब्रेरी को लिंक करने की अनुमति नहीं देता.
Android 7.0 (एपीआई लेवल 24) में किए गए बदलावों की पूरी सूची के लिए, प्लैटफ़ॉर्म के उस वर्शन के लिए परफ़ॉर्मेंस में हुए बदलाव पेज देखें.
अगले सेक्शन में दिए गए निर्देशों का पालन करके जारी रखें.
Android 8 (एपीआई लेवल 26) पर माइग्रेट करना
Android 8.0 और इसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, ये बातें ध्यान में रखना ज़रूरी है:
-
बैकग्राउंड में प्रोसेस करने की सीमाएं
-
सिस्टम, फ़ोरग्राउंड में नहीं चल रहे ऐप्लिकेशन के लिए सेवाओं पर पाबंदी लगाता है.
-
startService()
अब जब कोई ऐप्लिकेशनstartService()
के प्रतिबंधित होने के दौरान उसे ट्रिगर करने की कोशिश करता है, तो वह अपवाद दिखाता है. -
फ़ोरग्राउंड सेवाएं शुरू करने के लिए, ऐप्लिकेशन को
startForeground()
औरstartForegroundService()
का इस्तेमाल करना होगा. - Android 8.0 (एपीआई लेवल 26) के काम करने के तरीके में हुए बदलावों वाले पेज पर दिए गए दस्तावेज़ के मुताबिक, JobScheduler API में किए गए बदलावों की ध्यान से समीक्षा करें.
- 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 का इस्तेमाल करके भी साइन करना जारी रखना चाहिए.
- ऐसे इंटरफ़ेस का इस्तेमाल जो SDK टूल में उपलब्ध नहीं है. एपीआई लेवल 30 को टारगेट करने वाले ऐप्लिकेशन के लिए, ऐसे इंटरफ़ेस का इस्तेमाल करने का सुझाव नहीं दिया जाता है जिनमें SDK टूल नहीं है. ऐसा इसलिए है, क्योंकि इनमें से कुछ इंटरफ़ेस अब ब्लॉक कर दिए गए हैं. ब्लॉक किए गए ऐसे इंटरफ़ेस की पूरी सूची देखने के लिए, ऐसे गैर-SDK इंटरफ़ेस जो अब 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 टूल और लाइब्रेरी की जांच करना और उन्हें अपडेट करना
पक्का करें कि तीसरे पक्ष की SDK टूल डिपेंडेंसी, API 31 के साथ काम करती हों: SDK टूल की सेवा देने वाली कुछ कंपनियां, इसे अपने मेनिफ़ेस्ट में पब्लिश करती हैं. अन्य कंपनियों के लिए, इसकी अलग से जांच करनी होगी. अगर आपने किसी ऐसे SDK टूल का इस्तेमाल किया है जो API 31 के साथ काम नहीं करता, तो समस्या को ठीक करने के लिए SDK टूल की सेवा देने वाली कंपनी के साथ काम करना प्राथमिकता बनाएं.
इसके अलावा, ध्यान रखें कि ऐसा हो सकता है कि आपके ऐप्लिकेशन या गेम की targetSdkVersion
, निजी Android प्लैटफ़ॉर्म की लाइब्रेरी के ऐक्सेस पर पाबंदी लगा दे. ज़्यादा जानकारी के लिए, लाइब्रेरी से NDK ऐप्लिकेशन लिंक करना देखें.
आपको Android सहायता लाइब्रेरी के उस वर्शन में मौजूद पाबंदियों की भी पुष्टि करनी चाहिए जिसका इस्तेमाल किया जा रहा है. हमेशा की तरह, आपको यह पक्का करना होगा कि Android Support Library के मुख्य वर्शन और आपके ऐप्लिकेशन के compileSdkVersion
के बीच काम करने की सुविधा हो.
हमारा सुझाव है कि आप targetSdkVersion
को, सहायता लाइब्रेरी के मुख्य वर्शन से छोटा या उसके बराबर रखें. हमारा सुझाव है कि आप अपने ऐप्लिकेशन में, काम करने वाली नई Support Library का इस्तेमाल करें. इससे, आपको काम करने से जुड़ी नई सुविधाओं और गड़बड़ियों को ठीक करने का फ़ायदा मिलेगा.
अपने ऐप्लिकेशन का परीक्षण करें
अपने ऐप्लिकेशन के एपीआई लेवल और सुविधाओं को ज़रूरत के मुताबिक अपडेट करने के बाद, आपको इस्तेमाल के कुछ मुख्य उदाहरणों की जांच करनी चाहिए. यहां दिए गए सुझावों में सभी चीज़ें शामिल नहीं हैं. हालांकि, इनका मकसद आपकी जांच की प्रोसेस को बेहतर बनाना है. हमारा सुझाव है कि आप इन चीज़ों की जांच करें:
- आपका ऐप्लिकेशन, गड़बड़ियों या चेतावनियों के बिना एपीआई लेवल 29 के लिए कंपाइल हो.
आपके ऐप्लिकेशन में, उन मामलों के लिए कोई रणनीति हो जहां उपयोगकर्ता अनुमति के अनुरोधों को अस्वीकार करता है और उपयोगकर्ता को अनुमतियों के लिए प्रॉम्प्ट करता है. ऐसा करने के लिए:
- अपने ऐप्लिकेशन की ऐप्लिकेशन की जानकारी वाली स्क्रीन पर जाएं और हर अनुमति को बंद करें.
- ऐप्लिकेशन खोलें और पक्का करें कि यह क्रैश न हो.
- इस्तेमाल के उदाहरणों के मुख्य टेस्ट करें और पक्का करें कि ज़रूरी अनुमतियों के लिए फिर से अनुरोध किया गया हो.
Doze मोड को सही तरीके से इस्तेमाल करता है और कोई गड़बड़ी नहीं होती.
- adb का इस्तेमाल करके, ऐप्लिकेशन के चलने के दौरान अपने टेस्ट डिवाइस को Doze मोड में डालें.
- Firebase Cloud Messaging मैसेज को ट्रिगर करने वाले इस्तेमाल के उदाहरणों की जांच करें.
- अलार्म या जॉब का इस्तेमाल करने वाले इस्तेमाल के उदाहरणों की जांच करें.
- बैकग्राउंड सेवाओं पर निर्भरता को खत्म करें.
- अपने ऐप्लिकेशन को ऐप्लिकेशन स्टैंडबाय में सेट करें
- Firebase Cloud Messaging मैसेज को ट्रिगर करने वाले इस्तेमाल के उदाहरणों की जांच करें.
- अलार्म का इस्तेमाल करने वाले इस्तेमाल के उदाहरणों की जांच करें.
- adb का इस्तेमाल करके, ऐप्लिकेशन के चलने के दौरान अपने टेस्ट डिवाइस को Doze मोड में डालें.
नई फ़ोटो / वीडियो लेने की सुविधा
- देखें कि आपका ऐप्लिकेशन, पाबंदी वाले
ACTION_NEW_PICTURE
औरACTION_NEW_VIDEO
ब्रॉडकास्ट को सही तरीके से मैनेज करता है या नहीं. इसका मतलब है कि उन्हें JobScheduler जॉब में ले जाया गया है. - पक्का करें कि इन इवेंट पर निर्भर इस्तेमाल के सभी ज़रूरी उदाहरण अब भी काम कर रहे हों.
- देखें कि आपका ऐप्लिकेशन, पाबंदी वाले
अन्य ऐप्लिकेशन के साथ फ़ाइलें शेयर करने की सुविधा देता है - किसी भी ऐसे इस्तेमाल के उदाहरण की जांच करें जो किसी अन्य ऐप्लिकेशन के साथ फ़ाइल का डेटा शेयर करता हो (यहां तक कि उसी डेवलपर का कोई अन्य ऐप्लिकेशन भी हो)
- देखें कि कॉन्टेंट दूसरे ऐप्लिकेशन में दिख रहा है या नहीं और ऐप्लिकेशन क्रैश नहीं हो रहा है.
ज़्यादा जानकारी
Google Play Console से ईमेल पाने के लिए ऑप्ट इन करें, ताकि हम आपको Android और Google Play से जुड़े ज़रूरी अपडेट और सूचनाएं भेज सकें. इनमें हर महीने मिलने वाला पार्टनर न्यूज़लेटर भी शामिल है.