Android 8.0 पर माइग्रेट करना

Android 8.0 (एपीआई लेवल 26) में उपयोगकर्ता के व्यवहार में बदलाव होने के साथ-साथ, ऐसी नई सुविधाएं और एपीआई भी उपलब्ध हैं तो आपको अपने ऐप्लिकेशन का फ़ायदा मिल सकता है. इस दस्तावेज़ में, माइग्रेट करने का तरीका बताया गया है Android 8.0 पर अपने ऐप्लिकेशन को अपडेट करने के लिए, ये दो चरण हैं:

  1. यह पक्का करना कि Android 8.0 पर काम करता हो

    पुष्टि करें कि आपका ऐप्लिकेशन, प्लैटफ़ॉर्म के नए वर्शन पर पूरी तरह से काम करता हो. इस पड़ाव पर, आप नए एपीआई का इस्तेमाल नहीं करते या अपने ऐप्लिकेशन का targetSdkVersion नहीं बदलते, लेकिन कुछ मामूली बदलाव मदद करना ज़रूरी हो सकता है.

  2. टारगेट वर्शन अपडेट करना और Android 8.0 की सुविधाएं इस्तेमाल करना

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

पक्का करना कि Android 8.0 के साथ काम करता हो

यहां मकसद यह पक्का करना है कि आपका मौजूदा ऐप्लिकेशन ठीक से Android 8.0 पर काम करता है (एपीआई लेवल 26). प्लैटफ़ॉर्म में किए गए कुछ बदलावों से, आपके ऐप्लिकेशन के काम करने के तरीके पर असर पड़ सकता है. कुछ समायोजन आवश्यक हो सकते हैं, लेकिन आपको नए API का उपयोग करने की आवश्यकता नहीं है या अपना targetSdkVersion बदलें.

सिलसिलेवार तरीके से यह पक्का करना कि वे Android 8.0 के साथ काम करते हों

Android 8.0 पर चलने वाला डिवाइस तैयार करें

  • अगर आपके पास कोई ऐसा डिवाइस है जिस पर यह सुविधा काम करती है (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P या Nexus प्लेयर), तो निर्देश आपके डिवाइस का फ़्लैश इस्तेमाल करता है.
  • या Android Emulator के लिए Android 8.0 सिस्टम इमेज डाउनलोड करें. यह SDK Manager में Android 8.0 का इस्तेमाल, Google API Intel x86 Atom System Image के लिए किया गया हो.

    ध्यान दें: Android 8.0 सिस्टम इमेज, यहां से डाउनलोड करने के लिए उपलब्ध है Android Studio 3.0 और इसके बाद के वर्शन. ज़्यादा जानकारी के लिए, Android 8.0 SDK टूल पाने के लिए नीचे दिया गया सेक्शन देखें.

साथ काम करने से जुड़े आंकड़ों की जांच करें

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

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

टेबल 1. सभी ऐप्लिकेशन पर असर डालने वाले अहम बदलाव Android 8.0 डिवाइस पर चल रहा है.

बदलें खास जानकारी ज़्यादा जानकारी
बैकग्राउंड में जगह की जानकारी अपडेट करने की ज़रूरत नहीं पड़ती अगर आपके ऐप्लिकेशन को बैकग्राउंड में चलने वाली सेवा से जगह की जानकारी के अपडेट मिलते हैं, तो उसे जगह की जानकारी के अपडेट कम बार मिलते हैं Android के पुराने वर्शन की तुलना में Android 8.0 (एपीआई लेवल 26) पर अपडेट मिलते हैं. खास तौर पर, बैकग्राउंड में सेवा प्रति घंटे कुछ बार से ज़्यादा स्थान अपडेट प्राप्त नहीं कर सकती. हालांकि, आपके ऐप्लिकेशन फ़ोरग्राउंड में है, लेकिन जगह की जानकारी के अपडेट होने की दर नहीं बदलेगी. बैकग्राउंड में जगह की जानकारी ऐक्सेस करने की सीमाएं
net.hostname पर अब ऐप्लिकेशन इस्तेमाल नहीं किया जा सकता net.hostname सिस्टम प्रॉपर्टी की क्वेरी करने से शून्य नतीजा मिलता है. कोई नहीं
send(DatagramPacket) से नया अपवाद send(DatagramPacket) तरीके से SocketException मिलता है अगर पहले चलाया गया connect(InetAddress, int) तरीका सफल नहीं रहा हो. व्यवहार में बदलाव: नेटवर्क और एचटीटीपी या एचटीटीपीएस कनेक्टिविटी
सही NullPointerException : AbstractCollection तरीका AbstractCollection.removeAll(null) और AbstractCollection.retainAll(null) अब हमेशा NullPointerException; पहले, संग्रह खाली होने पर NullPointerException को नहीं हटाया जाता था. इस बदलाव से दस्तावेज़ के मुताबिक व्यवहार एक जैसा हो जाता है. व्यवहार में बदलाव: कलेक्शन मैनेज करना
सही NullPointerException : Currency.getDisplayName(null) Currency.getDisplayName(null) को कॉल किया जा रहा है NullPointerException देता है. व्यवहार में बदलाव: स्थानीय भाषा और अंतरराष्ट्रीय स्तर का इस्तेमाल करना

Android 8.0 में हुए बदलावों की ज़्यादा जानकारी पाने के लिए (एपीआई लेवल 26), साथ ही Android 8.0 व्यवहार में बदलाव देखें.

अपने टारगेट वर्शन को अपडेट करें और Android 8.0 की सुविधाओं का इस्तेमाल करें

इस सेक्शन में Android 8.0 के लिए पूरी सहायता देने का तरीका बताया गया है अपने targetSdkVersion को 26 पर अपडेट करके, (एपीआई लेवल 26) इसमें Android 8.0 की नई सुविधाएं जोड़ी जा रही हैं.

आपको नए एपीआई उपलब्ध कराने के साथ-साथ, Android 8.0 में कुछ खास सुविधाएं भी दी गई हैं जब आप अपने targetSdkVersion को 26 में अपडेट करते हैं, तो वह बदलता है. व्यवहार में कुछ बदलाव होने की वजह से ऐप्लिकेशन क्रैश न हो, इसके लिए कोड में बदलाव करना पड़ सकता है. ऐसे में, आपको पहले यह समझना होगा कि ऐप्लिकेशन की परफ़ॉर्मेंस कैसी है Android 8.0 को टारगेट करने वाले ऐप्लिकेशन के व्यवहार में होने वाले सभी बदलावों की समीक्षा करके, targetSdkVersion को बदलने पर असर होता है.

ध्यान दें: इन कामों को करने के लिए ऊपर बताया गया तरीका यह पक्का करें कि प्लैटफ़ॉर्म सही तरीके से काम कर रहा है Android 8.0 को टारगेट करने के लिए आपका ऐप्लिकेशन है, इसलिए पहले इन चरणों को पूरा कर लें.

टारगेट वर्शन को अपडेट करें और Android 8.0 की सुविधाओं को सिलसिलेवार तरीके से इस्तेमाल करें

Android 8.0 SDK टूल पाएं

Android 8.0 पर अपना ऐप्लिकेशन बनाने के लिए, SDK टूल के पैकेज पाएं (एपीआई लेवल 26) Android Studio (हमारा सुझाव है कि Android Studio 3.0 के बाद के वर्शन का इस्तेमाल करें). Android Studio 3.0 के बाद के वर्शन में, Android 8.0 की सुविधाओं के लिए कई टूल मौजूद हैं जैसे कि अडैप्टिव आइकॉन और डाउनलोड किए जा सकने वाले फ़ॉन्ट का इस्तेमाल करें. अगर आपको उन सुविधाओं की ज़रूरत नहीं है, तो Android Studio के स्टेबल वर्शन का इस्तेमाल किया जा सकता है Android 8.0 वाला ऐप्लिकेशन बनाने और नए एपीआई का इस्तेमाल करने के लिए, 2.3.3 वर्शन का होना ज़रूरी है.

Android Studio के किसी भी वर्शन का इस्तेमाल करके सेट अप करने के लिए, यह तरीका अपनाएं:

  1. Android Studio लॉन्च करें. इसके बाद, टूल > एसडीके मैनेजर.
  2. SDK प्लैटफ़ॉर्म टैब में, पैकेज की जानकारी दिखाएं को चुनें. तय सीमा से कम Android 8.0 प्रीव्यू के लिए ये सुविधाएं देखें:
    • Android SDK प्लैटफ़ॉर्म 26
    • Google API Intel x86 ऐटम सिस्टम इमेज (सिर्फ़ एम्युलेटर के लिए ज़रूरी है)
  3. SDK टूल टैब पर स्विच करें और उन सभी आइटम को चुनें जिनके लिए अपडेट उपलब्ध हैं (क्लिक करें हर चेकबॉक्स जो डैश दिखाता है). इसमें इन आइटम के नए वर्शन शामिल होने चाहिए जो ज़रूरी हैं:
    • Android SDK बिल्ड-टूल 26.0.0
    • Android SDK प्लैटफ़ॉर्म-टूल 26.0.0
    • Android एम्युलेटर 26.0.0
  4. चुने गए सभी SDK पैकेज इंस्टॉल करने के लिए, OK पर क्लिक करें.

अब आप Android 8.0 के साथ इस्तेमाल करने के लिए तैयार हैं.

अपना बिल्ड कॉन्फ़िगरेशन अपडेट करें

compileSdkVersion को अपडेट करें, targetSdkVersion और Support Library का नया वर्शन उपलब्ध संशोधन, उदाहरण के लिए:

android {
  compileSdkVersion 26

  defaultConfig {
    targetSdkVersion 26
  }
  ...
}

dependencies {
  compile 'com.android.support:appcompat-v7:26.0.0'
}

// REQUIRED: Google's new Maven repo is required for the latest
// support library that is compatible with Android 8.0
repositories {
    google()

    // If you're using a version of Gradle lower than 4.1, you must instead use:
    // maven {
    //     url 'https://maven.google.com'
    // }
}

मेनिफ़ेस्ट फ़ाइल से ब्रॉडकास्ट रिसीवर को हटाएं

क्योंकि Android 8.0 (एपीआई लेवल 26) की मदद से, सीमाएं के लिए, आपको ऐसे सभी ब्रॉडकास्ट रिसीवर हटाने चाहिए इंप्लिसिट ब्रॉडकास्ट इंटेंट के लिए रजिस्टर किया गया है. उन्हें उनकी जगह पर छोड़ देने से, आपका ऐप्लिकेशन खराब नहीं होता हालाँकि, Android 8.0 पर आपके ऐप्लिकेशन के चलने के दौरान इनका कोई असर नहीं पड़ता.

ऐसे ब्रॉडकास्ट जिनका जवाब सिर्फ़ आपका ऐप्लिकेशन दे सके—साफ़ तौर पर ब्रॉडकास्ट इंटेंट और खास तौर पर, आपके ऐप्लिकेशन के पैकेज नाम पर भेजे गए ब्रॉडकास्ट—इन पर पहले की तरह ही काम करते रहेंगे Android 8.0.

इस नई पाबंदी के कुछ अपवाद हैं. ऐसे इंप्लिसिट ब्रॉडकास्ट की सूची जो Android 8.0 को टारगेट करने वाले ऐप्लिकेशन में अब भी काम करते हैं, इंप्लिसिट ब्रॉडकास्ट अपवाद देखें.

अपने Android 8.0 ऐप्लिकेशन की जांच करना

ऊपर बताई गई तैयारी के बाद, अपना ऐप्लिकेशन बनाएं और उसकी जांच करें ताकि यह पक्का किया जा सके कि Android 8.0 को टारगेट करते समय यह ठीक से काम करे (एपीआई लेवल 26). यह समीक्षा करने का एक और अच्छा समय है, मुख्य ऐप्लिकेशन क्वालिटी के लिए दिशा-निर्देश और सबसे बेहतर जांच के तरीके.

जब targetSdkVersion को 26 पर सेट करके अपना ऐप्लिकेशन बनाया जाता है, इसका पालन करने के लिए, आपको प्लैटफ़ॉर्म में कुछ खास बदलावों के बारे में जानकारी होनी चाहिए. कुछ इन बदलावों से आपके ऐप्लिकेशन के काम करने के तरीके या यहां तक कि अपने ऐप्लिकेशन को पूरी तरह से काम करना बंद कर दें, भले ही आप नए वर्शन को Android 8.0 की सुविधाओं के साथ आता है.

टेबल 2 में इन बदलावों की सूची दी गई है. साथ ही, ज़्यादा जानकारी देने वाले लिंक भी दिए गए हैं.

दूसरी टेबल. ऐप्लिकेशन पर असर डालने वाले मुख्य बदलाव जब targetSdkVersion को 26 पर सेट किया गया हो.

बदलें खास जानकारी ज़्यादा जानकारी
निजता Android 8.0 (एपीआई लेवल 26) net.dns1, net.dns2, net.dns3 या net.dns4 की सिस्टम प्रॉपर्टी. व्यवहार में होने वाले बदलाव: निजता
लिखने लायक और एक्ज़ीक्यूटेबल सेगमेंट लागू किए गए नेटिव लाइब्रेरी के लिए, Android 8.0 (एपीआई लेवल 26) वह नियम लागू करता है जो डेटा एक्ज़ीक्यूटेबल नहीं होना चाहिए और कोड लिखने योग्य नहीं होना चाहिए. व्यवहार में होने वाले बदलाव: स्थानीय लाइब्रेरी
ईएलएफ़ हेडर और सेक्शन की पुष्टि करना डाइनैमिक लिंकर, ईएलएफ़ हेडर में ज़्यादा वैल्यू की जांच करता है और सेक्शन हेडर से मेल खाता है. साथ ही, अमान्य होने पर काम नहीं करता. व्यवहार में होने वाले बदलाव: स्थानीय लाइब्रेरी
सूचनाएं SDK टूल के Android 8.0 (एपीआई लेवल 26) वर्शन को टारगेट करने वाले ऐप्लिकेशन पोस्ट करने के लिए, एक या उससे ज़्यादा सूचना चैनल लागू करने होंगे सूचना मिलती है. एपीआई की खास जानकारी: सूचनाएं
List.sort() तरीका ऐसा हो सकता है कि इस तरीके को लागू करने पर Collections.sort() को कॉल न किया जाए या स्टैक ओवरफ़्लो की वजह से आपके ऐप्लिकेशन में अपवाद हो. व्यवहार में होने वाले बदलाव: कलेक्शन मैनेज करना
Collections.sort() तरीका सूची लागू करने के तरीके में, Collections.sort() अब ConcurrentModificationException. व्यवहार बदलाव: कलेक्शन मैनेज करना

Android 8.0 (एपीआई लेवल 26) में, ऐप्लिकेशन के काम करने के तरीके में हुए बदलावों की ज़्यादा जानकारी पाने के लिए, Android 8.0 व्यवहार में बदलाव देखें.

Android 8.0 (एपीआई लेवल 26) में उपलब्ध नई सुविधाओं और एपीआई के बारे में जानने के लिए, यहां देखें Android 8.0 सुविधाएं और एपीआई.