यदि आप Flutter बैंडवैगन पर इसके शुरुआती दिनों में कूदे, तो सबसे अधिक संभावना है कि आपके पास एक या दो प्रोजेक्ट हैं जो Flutter के संस्करण 1.12 से पहले बनाए गए थे। यदि ऐसा है, तो आपने शायद यह संदेश देखा होगा जब भी आप अपने किसी प्रोजेक्ट में Pub get चलाते हैं:
यह ऐप Android एम्बेडिंग के एक डिप्रिकेटेड संस्करण का उपयोग कर रहा है।
अप्रत्याशित रनटाइम विफलताओं, या भविष्य की बिल्ड विफलताओं से बचने के लिए, इस ऐप को V2 एम्बेडिंग में माइग्रेट करने का प्रयास करें।
माइग्रेट करने के लिए डॉक्स देखें: https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects
अब, दस्तावेज़ में स्वयं वे चरण हैं जिनका आपको पालन करने की आवश्यकता है ताकि यह चेतावनी गायब हो जाए, लेकिन यह हमेशा स्पष्ट नहीं करता कि क्या बदलना है और कहां।
यह लेख आपके Flutter एप्लिकेशन को V2 एम्बेडिंग में माइग्रेट करने पर एक चरण-दर-चरण वॉकथ्रू देगा ताकि आप उस चेतावनी को हमेशा के लिए गायब कर सकें।
स्वचालित माइग्रेशन - आसान रास्ता
यह कहा जाना चाहिए कि यदि आपका एप्लिकेशन आसानी से पुनः बनाया जा सकता है तो आप इस माइग्रेशन प्रक्रिया को छोड़ सकते हैं। इसका क्या मतलब है?
खैर, यदि आपके एप्लिकेशन में कोड जटिल नहीं है, तो आप बस अपने lib फोल्डर में फाइलों को सेव कर सकते हैं और flutter create का उपयोग करके एक नया प्रोजेक्ट बना सकते हैं। इस तरह, आपके पास एक प्रोजेक्ट होगा जो पहले से ही V2 एम्बेडिंग में माइग्रेटेड है और आपको बस अपने lib फोल्डर में मौजूद कोड को कॉपी-पेस्ट करना होगा।
लेकिन, यदि आपका प्रोजेक्ट अधिक जटिल है - मान लीजिए यह एक पैकेज है जिसमें प्लेटफ़ॉर्म-विशिष्ट कोड है - तो आप शायद मैन्युअल रूप से इसे माइग्रेट करके बेहतर होंगे।
मैन्युअल माइग्रेशन - इन चरणों का पालन करें
- MainActivity.kt (या .java) फाइल को अपने एप्लिकेशन में खोलें
- आपको इस फाइल की किसी भी सामग्री को हटाने की आवश्यकता है और बस इसे एक क्लास डिक्लेरेशन के साथ नंगे छोड़ दें (जब तक कि आपके पास वहां विशिष्ट लॉजिक न हो)।
- सभी आयातों को हटा दें और सुनिश्चित करें कि एक आयात है जो यह है:
import io.flutter.embedding.android.FlutterActivity;
अंतिम परिणाम इस प्रकार होना चाहिए:
import io.flutter.embedding.android.FlutterActivity; public class MainActivity extends FlutterActivity { // यहां कुछ भी नहीं होना चाहिए }
- AndroidManifest.xml फाइल खोलें और एप्लिकेशन टैग के तहत नाम विशेषता को
${applicationName}में बदलें - ताकि यह इस तरह दिखे:
<application android:name="${applicationName}"> .... </application>
- आपको अपने एप्लिकेशन टैग के अंदर निम्नलिखित मेटा डेटा जोड़ने की आवश्यकता है:
<meta-data android:name="flutterEmbedding" android:value="2" />
- यदि आप एक विशिष्ट स्प्लैश स्क्रीन व्यवहार चाहते हैं, तो आपको स्प्लैश स्क्रीन मेटा टैग को हटाने की आवश्यकता होगी:
<meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" />
- फिर अपने styles.xml फाइल पर जाएं और वहां अपनी पसंद के ड्रॉएबल के साथ LaunchTheme को कॉन्फ़िगर करें:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background </item> </style> </resources>
उपरोक्त सभी परिवर्तनों के बाद आपका AndroidManifest.xml कुछ इस तरह दिखेगा:
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="PACKAGE_NAME"> <application android:name="${applicationName}" android:label="APPLICATION_LABEL" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="flutterEmbedding" android:value="2" /> </application> </manifest>
AndroidX सपोर्ट
आपके प्रोजेक्ट को पुराने सपोर्ट लाइब्रेरी के बजाय AndroidX लाइब्रेरी का उपयोग करने के लिए माइग्रेट करने की भी आवश्यकता हो सकती है। जब आप अपना एप्लिकेशन बिल्ड और चलाएंगे तो आपको इसके लिए अलर्ट किया जाएगा:
आपका ऐप AndroidX का उपयोग नहीं कर रहा है। संभावित बिल्ड विफलताओं से बचने के लिए, आप https://goo.gl/CP92wY पर चरणों का पालन करके अपने ऐप को तुरंत माइग्रेट कर सकते हैं।
इसे ठीक करना काफी सरल है, क्योंकि Android Studio में AndroidX में माइग्रेट करने के लिए बिल्ट-इन सपोर्ट है।
अपने Flutter एप्लिकेशन के Android फोल्डर को एक स्टैंडअलोन प्रोजेक्ट के रूप में खोलकर शुरू करें
Refactor → Migrate to AndroidX पर क्लिक करें:
AndroidX में माइग्रेट करने के लिए ड्रॉपडाउन मेनू
फिर आपको अपने प्रोजेक्ट की एक प्रति सहेजने के लिए प्रेरित किया जाएगा और उसके बाद, माइग्रेशन प्रक्रिया होगी।
आपको जो त्रुटियां दिखाई दे सकती हैं
इस माइग्रेशन प्रक्रिया के दौरान, आपको अपना एप्लिकेशन बनाते समय कई त्रुटियों का सामना करना पड़ सकता है। सबसे प्रमुख हैं:
- Unable to get mutable Windows environment variable map
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'base-extension'. One of '{layoutlib}' is expected
- Warning: This version only understands SDK XML versions up to 2 but an SDK XML file of version 3 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times
पहली दो त्रुटियां एक-दूसरे से संबंधित हैं और दोनों एक ही मूल कारण से उत्पन्न होती हैं। ऐसा इसलिए है क्योंकि आपका प्रोजेक्ट एक पुराने Gradle संस्करण के साथ सेटअप किया गया था और इसे अपग्रेड करने की आवश्यकता है।
ऐसा करने के लिए, इन चरणों का पालन करें:
- अपने Flutter एप्लिकेशन के Android फोल्डर को एक स्टैंडअलोन प्रोजेक्ट के रूप में खोलें
- File → Project Structure पर क्लिक करें:
Project Structure चुनने के लिए ड्रॉपडाउन मेनू
- Gradle संस्करण को कुछ अधिक हाल के में बदलें और जो आपके द्वारा उपयोग किए जा रहे वर्तमान Android Studio संस्करण से मेल खाता हो
AGP और Gradle सेटिंग्स स्क्रीन
आप AGP Upgrade Assistant का उपयोग करके भी ऐसा कर सकते हैं Tools → AGP Upgrade Assistant पर जाकर:
AGP Upgrade Assistant का उपयोग करके AGP अपग्रेड करने के लिए ड्रॉपडाउन मेनू
तीसरा मुद्दा, जो एक चेतावनी है, पुराने Android SDK Tools संस्करण के कारण हो सकता है। ऐसा करने का तरीका जानने के लिए, आप यहां जा सकते हैं।
आपका प्रोजेक्ट अब पूरी तरह से माइग्रेटेड, कंपाइलिंग और सुचारू रूप से चलना चाहिए।
यदि आप मेरे द्वारा लिखे गए अन्य लेख पढ़ना चाहते हैं, तो आप उन्हें यहां देख सकते हैं:
मुफ्त में कोड करना सीखें। freeCodeCamp का ओपन सोर्स पाठ्यक्रम 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद कर चुका है। शुरू करें