Google Play के टारगेट एपीआई लेवल की ज़रूरी शर्तें पूरी करें

जब कोई 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 की अनुमति का अनुरोध करना होगा.
  • हाइबरनेशन मोड: अगर किसी ऐप्लिकेशन का इस्तेमाल कुछ समय तक नहीं किया जाता है, तो उसे हाइबरनेशन मोड में डाला जा सकता है. हाइबरनेट मोड में, आपके ऐप्लिकेशन की रनटाइम अनुमतियां और कैश मेमोरी रीसेट हो जाती हैं. साथ ही, न तो कोई नौकरी चलाई जा सकती है और न ही सूचनाएं भेजी जा सकती हैं. ऐप्लिकेशन के 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 एपीआई का दस्तावेज़ देखें.
    • बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सीमाएं
      • बैकग्राउंड में चल रहे ऐप्लिकेशन के पास, जगह की जानकारी के डेटा का सीमित ऐक्सेस होता है.
  • सूचना चैनल
  • निजता
    • ANDROID_ID का दायरा, ऐप्लिकेशन साइनिंग पासकोड के हिसाब से तय होता है.

Android 8.0 (एपीआई लेवल 26) में किए गए बदलावों की पूरी सूची के लिए, प्लैटफ़ॉर्म के उस वर्शन के लिए कार्रवाई में हुए बदलाव पेज देखें.

Android 8 (एपीआई 26) से Android 9 (एपीआई 28) पर माइग्रेट करना

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 की अनुमति की ज़रूरत होती है.
    • वाई-फ़ाई की सेटिंग का ऐक्सेस सीमित करना

Android 10 (एपीआई लेवल 29) से Android 11 (एपीआई लेवल 30) पर माइग्रेट करना

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 Support Library के उस वर्शन में मौजूद पाबंदियों की भी पुष्टि करनी चाहिए जिसका इस्तेमाल किया जा रहा है. हमेशा की तरह, आपको यह पक्का करना होगा कि Android Support Library के मुख्य वर्शन और आपके ऐप्लिकेशन के compileSdkVersion के बीच काम करने की सुविधा हो.

हमारा सुझाव है कि आप targetSdkVersion को, सहायता लाइब्रेरी के मुख्य वर्शन से छोटा या उसके बराबर रखें. हमारा सुझाव है कि आप अपने ऐप्लिकेशन में, काम करने वाली हाल ही की सहायता लाइब्रेरी पर अपडेट करें. इससे, आपको काम करने से जुड़ी नई सुविधाओं और गड़बड़ियों को ठीक करने का फ़ायदा मिलेगा.

अपने ऐप्लिकेशन का परीक्षण करें

अपने ऐप्लिकेशन के एपीआई लेवल और सुविधाओं को ज़रूरत के हिसाब से अपडेट करने के बाद, आपको कुछ मुख्य इस्तेमाल के उदाहरणों की जांच करनी चाहिए. यहां दिए गए सुझावों में सभी बातें शामिल नहीं हैं. हालांकि, इनका मकसद आपकी जांच की प्रोसेस को बेहतर बनाना है. हमारा सुझाव है कि आप इन चीज़ों की जांच करें:

  • आपका ऐप्लिकेशन, गड़बड़ियों या चेतावनियों के बिना एपीआई लेवल 29 के लिए कंपाइल हो.
  • आपके ऐप्लिकेशन में उन मामलों के लिए कोई रणनीति हो जहां उपयोगकर्ता अनुमति के अनुरोधों को अस्वीकार करता है और उपयोगकर्ता को अनुमतियों के लिए प्रॉम्प्ट करता है. ऐसा करने के लिए:

    • अपने ऐप्लिकेशन की 'ऐप्लिकेशन की जानकारी' स्क्रीन पर जाएं और हर अनुमति को बंद करें.
    • ऐप्लिकेशन खोलें और पक्का करें कि यह क्रैश न हो.
      • इस्तेमाल के उदाहरणों के मुख्य टेस्ट करें और पक्का करें कि ज़रूरी अनुमतियों के लिए फिर से अनुरोध किया गया हो.
  • Doze मोड को सही तरीके से इस्तेमाल करता है और कोई गड़बड़ी नहीं होती.

    • adb का इस्तेमाल करके, ऐप्लिकेशन के चलने के दौरान अपने टेस्ट डिवाइस को Doze मोड में डालें.
      • Firebase Cloud Messaging मैसेज को ट्रिगर करने वाले इस्तेमाल के उदाहरणों की जांच करें.
      • अलार्म या जॉब का इस्तेमाल करने वाले इस्तेमाल के उदाहरणों की जांच करें.
      • बैकग्राउंड सेवाओं पर निर्भरता को खत्म करें.
    • अपने ऐप्लिकेशन को ऐप्लिकेशन स्टैंडबाय मोड में सेट करना
      • Firebase Cloud Messaging मैसेज को ट्रिगर करने वाले इस्तेमाल के उदाहरणों की जांच करें.
      • अलार्म का इस्तेमाल करने वाले इस्तेमाल के उदाहरणों की जांच करें.
  • नई फ़ोटो / वीडियो लेने की सुविधा

    • देखें कि आपका ऐप्लिकेशन, पाबंदी वाले ACTION_NEW_PICTURE और ACTION_NEW_VIDEO ब्रॉडकास्ट को सही तरीके से मैनेज करता है या नहीं. इसका मतलब है कि उन्हें JobScheduler जॉब में ले जाया गया है.
    • पक्का करें कि इन इवेंट पर निर्भर रहने वाले सभी ज़रूरी इस्तेमाल के उदाहरण अब भी काम करते हों.
  • अन्य ऐप्लिकेशन के साथ फ़ाइलें शेयर करने की सुविधा देता है - किसी भी ऐसे इस्तेमाल के उदाहरण की जांच करें जो किसी अन्य ऐप्लिकेशन के साथ फ़ाइल का डेटा शेयर करता हो (यहां तक कि उसी डेवलपर का कोई दूसरा ऐप्लिकेशन भी हो)

    • देखें कि कॉन्टेंट दूसरे ऐप्लिकेशन में दिख रहा है या नहीं और ऐप्लिकेशन क्रैश नहीं हो रहा है.

ज़्यादा जानकारी

Google Play Console में ईमेल पाने की सुविधा के लिए ऑप्ट इन करें, ताकि हम आपको Android और Google Play से जुड़े अहम अपडेट और सूचनाएं भेज सकें. इनमें, हर महीने पार्टनर के लिए भेजा जाने वाला न्यूज़लेटर भी शामिल है.