जब कोई 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 ऑब्जेक्ट की म्यूटेबिलिटी: आपको अपने ऐप्लिकेशन के बनाए गए हर 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()का इस्तेमाल करना होगा. - Android 8.0 (एपीआई लेवल 26) के व्यवहार में बदलावों के बारे में जानकारी देने वाले पेज पर दिए गए JobScheduler API में किए गए बदलावों को ध्यान से पढ़ें.
- Firebase क्लाउड से मैसेज के लिए, Google Play services SDK का 10.2.1 वर्शन या इसके बाद का वर्शन ज़रूरी है.
- Firebase क्लाउड से मैसेज का इस्तेमाल करते समय, मैसेज डिलीवर करने की सुविधा, बैकग्राउंड में ऐप्लिकेशन के चलने की सीमाओं के मुताबिक काम करती है. जब मैसेज मिलने पर बैकग्राउंड में काम करना ज़रूरी हो, जैसे कि बैकग्राउंड डेटा सिंक करना, तो आपके ऐप्लिकेशन को 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अनुमति ज़रूरी है. - रीसेट न किए जा सकने वाले आइडेंटिफ़ायर, जैसे कि आईएमईआई और सीरियल नंबर को ऐक्सेस करने पर पाबंदी.
-
शारीरिक गतिविधि से जुड़ी जानकारी का सीमित ऐक्सेस. जैसे, उपयोगकर्ता के कदमों की संख्या. इसके लिए,
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()का इस्तेमाल न करें.
अपने एसडीके और लाइब्रेरी देखें और उन्हें अपडेट करें
पक्का करें कि तीसरे पक्ष के एसडीके टूल की डिपेंडेंसी, API 31 के साथ काम करती हों: एसडीके टूल की सेवा देने वाली कुछ कंपनियां, इसे अपने मेनिफ़ेस्ट में पब्लिश करती हैं. हालांकि, अन्य कंपनियों के लिए इसकी ज़्यादा जांच करनी होगी. अगर एपीआई 31 के साथ काम न करने वाले एसडीके का इस्तेमाल किया जा रहा है, तो एसडीके बनाने वाली कंपनी के साथ मिलकर इस समस्या को ठीक करें.
इसके अलावा, ध्यान दें कि आपके ऐप्लिकेशन या गेम का targetSdkVersion, Android प्लैटफ़ॉर्म की निजी लाइब्रेरी के ऐक्सेस को सीमित कर सकता है. ज़्यादा जानकारी के लिए, NDK ऐप्लिकेशन को प्लैटफ़ॉर्म लाइब्रेरी से लिंक करना लेख पढ़ें.
आपको Android Support Library के उस वर्शन में मौजूद पाबंदियों की भी पुष्टि करनी चाहिए जिसका इस्तेमाल किया जा रहा है. हमेशा की तरह, आपको यह पक्का करना होगा कि Android Support Library का मेजर वर्शन और आपके ऐप्लिकेशन का compileSdkVersion एक-दूसरे के साथ काम करता हो.
हमारा सुझाव है कि आप targetSdkVersion को सपोर्ट लाइब्रेरी के मेजर वर्शन से कम या उसके बराबर चुनें. हमारा सुझाव है कि आप हाल ही के ऐसे सपोर्ट लाइब्रेरी वर्शन पर अपडेट करें जो आपके ऐप्लिकेशन के साथ काम करता हो. इससे आपको नई सुविधाओं का फ़ायदा मिलेगा और गड़बड़ियों को ठीक करने वाले अपडेट मिलते रहेंगे.
अपने ऐप्लिकेशन का परीक्षण करें
अपने ऐप्लिकेशन के एपीआई लेवल और सुविधाओं को ज़रूरत के हिसाब से अपडेट करने के बाद, आपको इस्तेमाल के कुछ मुख्य उदाहरणों की जांच करनी चाहिए. यहां दिए गए सुझावों में सभी ज़रूरी बातें शामिल नहीं हैं. हालांकि, इनका मकसद आपको टेस्टिंग की प्रोसेस के बारे में जानकारी देना है. हमारा सुझाव है कि आप इनकी जांच करें:
- आपका ऐप्लिकेशन, एपीआई लेवल 29 के साथ बिना किसी गड़बड़ी या चेतावनी के कंपाइल होता हो.
आपके ऐप्लिकेशन में ऐसी रणनीति होनी चाहिए जिसके तहत, अनुमति के अनुरोधों को अस्वीकार करने पर उपयोगकर्ता को अनुमति के लिए प्रॉम्प्ट किया जा सके. इसके लिए:
- अपने ऐप्लिकेशन की 'ऐप्लिकेशन की जानकारी' स्क्रीन पर जाएं और हर अनुमति को बंद करें.
- ऐप्लिकेशन खोलें और पक्का करें कि वह क्रैश न हो रहा हो.
- इस्तेमाल के मुख्य उदाहरणों की जांच करें और पक्का करें कि ज़रूरी अनुमतियों के लिए फिर से प्रॉम्प्ट किया गया हो.
यह सुविधा, बैटरी बचाएं मोड को सही तरीके से मैनेज करती है और इसमें कोई गड़बड़ी नहीं होती.
- adb का इस्तेमाल करके, अपने टेस्ट के लिए डिवाइस को Doze मोड में रखें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
- इस्तेमाल के उन सभी उदाहरणों की जांच करें जिनसे Firebase Cloud Messaging के मैसेज ट्रिगर होते हैं.
- अलार्म या जॉब का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- बैकग्राउंड सेवाओं पर निर्भरता कम करें.
- अपने ऐप्लिकेशन को ऐप स्टैंडबाय में सेट करना
- इस्तेमाल के उन सभी उदाहरणों की जांच करें जिनसे Firebase Cloud Messaging के मैसेज ट्रिगर होते हैं.
- अलार्म का इस्तेमाल करने वाले किसी भी उदाहरण की जांच करें.
- adb का इस्तेमाल करके, अपने टेस्ट के लिए डिवाइस को Doze मोड में रखें. ऐसा तब करें, जब आपका ऐप्लिकेशन चल रहा हो.
यह कुकी, नई फ़ोटो / वीडियो लेने की प्रोसेस को मैनेज करती है
- जांच करें कि आपका ऐप्लिकेशन, पाबंदी वाली
ACTION_NEW_PICTUREऔरACTION_NEW_VIDEOब्रॉडकास्ट को सही तरीके से हैंडल करता हो. इसका मतलब है कि उन्हें JobScheduler जॉब में ले जाया गया हो. - पक्का करें कि इन इवेंट पर निर्भर रहने वाले सभी ज़रूरी इस्तेमाल के उदाहरण अब भी काम कर रहे हों.
- जांच करें कि आपका ऐप्लिकेशन, पाबंदी वाली
यह अन्य ऐप्लिकेशन के साथ फ़ाइलें शेयर करने की सुविधा देता है - ऐसे किसी भी इस्तेमाल के उदाहरण की जांच करें जिसमें किसी अन्य ऐप्लिकेशन के साथ फ़ाइल डेटा शेयर किया जाता है. भले ही, वह ऐप्लिकेशन एक ही डेवलपर का हो
- जांच करें कि कॉन्टेंट, दूसरे ऐप्लिकेशन में दिख रहा हो और उससे ऐप्लिकेशन क्रैश न हो रहे हों.
ज़्यादा जानकारी
Google Play Console में ईमेल पाने की सुविधा के लिए ऑप्ट-इन करें, ताकि हम आपको Android और Google Play से जुड़े ज़रूरी अपडेट और सूचनाएं भेज सकें. इनमें पार्टनर के लिए हर महीने जारी होने वाला हमारा न्यूज़लेटर भी शामिल है.