अप्रत्याशित रनटाइम विफलताओं, या भविष्य की बिल्ड विफलताओं से बचने के लिए, इस ऐप को V2 एम्बेडिंग पर माइग्रेट करने का प्रयास करें। पी> <पी> किसी ऐप को माइग्रेट करने के लिए दस्तावेज़ों पर एक नज़र डालें:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects <पी> अब, इस चेतावनी को गायब करने के लिए दस्तावेज़ में ही वे चरण हैं जिनका आपको पालन करना होगा, लेकिन यह हमेशा स्पष्ट नहीं करता है कि क्या बदलना है और कहाँ बदलना है। पी> <पी> यह आलेख आपको अपने फ़्लटर एप्लिकेशन को V2 एंबेडिंग में स्थानांतरित करने के बारे में चरण दर चरण जानकारी देगा ताकि आप उस चेतावनी को हमेशा के लिए दूर कर सकें।
स्वचालित प्रवासन - आसान रास्ता
<पी> यह कहने की आवश्यकता है कि यदि आपका एप्लिकेशन आसानी से दोबारा बनाया जा सकता है तो आप माइग्रेशन की इस प्रक्रिया को छोड़ सकते हैं। तो इसका मतलब क्या है? पी> <पी> ठीक है, यदि आपके एप्लिकेशन में कोड जटिल नहीं है, तो आप फ़ाइलों को अपने lib फ़ोल्डर में सहेज सकते हैं औरflutter create का उपयोग करके एक नया प्रोजेक्ट बना सकते हैं। . इस तरह, आपके पास एक प्रोजेक्ट होगा जो पहले से ही V2 एंबेडिंग में माइग्रेट हो चुका है और आपको बस अपने lib फ़ोल्डर में मौजूद कोड को कॉपी पेस्ट करना होगा। <पी> लेकिन, यदि आपका प्रोजेक्ट अधिक जटिल है - मान लीजिए कि यह एक पैकेज है जिसमें प्लेटफ़ॉर्म विशिष्ट कोड है - तो संभवतः इसे मैन्युअल रूप से माइग्रेट करना आपके लिए बेहतर होगा। मैन्युअल माइग्रेशन - इन चरणों का पालन करें
- मुख्य गतिविधि खोलें आपके एप्लिकेशन में .kt (या .java) फ़ाइल
- आपको इस फ़ाइल में मौजूद किसी भी सामग्री को हटाना होगा और इसे क्लास घोषणा के साथ खाली छोड़ देना होगा (जब तक कि आपके पास वहां विशिष्ट तर्क न हो)।
- सभी आयात हटाएं और सुनिश्चित करें कि एक आयात हो जो यह है:
import io.flutter.embedding.android.FlutterActivity;
<पी> अंतिम परिणाम इस प्रकार होना चाहिए: import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
// Nothing should be here
}
- 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" />
- फिर अपनी style.xml फ़ाइल पर जाएं और वहां अपनी पसंद के ड्रॉएबल के साथ लॉन्चथीम को कॉन्फ़िगर करें:
<?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="http://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 पर दिए गए चरणों का पालन करके अपने ऐप को तुरंत माइग्रेट कर सकते हैं। <पी> इसे ठीक करना काफी सरल है, क्योंकि एंड्रॉइड स्टूडियो ने एंड्रॉइडएक्स पर माइग्रेट करने के लिए समर्थन बनाया है। <पी> एक स्टैंडअलोन प्रोजेक्ट के रूप में अपने फ़्लटर एप्लिकेशन के एंड्रॉइड फ़ोल्डर को खोलकर शुरुआत करें <पी> रिफैक्टर पर क्लिक करें → AndroidX पर माइग्रेट करें: <पी>त्रुटियाँ जो आपको दिखाई दे सकती हैं
<पी> इस माइग्रेशन प्रक्रिया के दौरान, आपको अपना एप्लिकेशन बनाते समय कई त्रुटियों का सामना करना पड़ सकता है। सबसे प्रमुख हैं:- परिवर्तनीय Windows वातावरण चर मानचित्र प्राप्त करने में असमर्थ
- cvc-complex-type.2.4.a:तत्व 'बेस-एक्सटेंशन' से शुरू होने वाली अमान्य सामग्री पाई गई। '{layoutlib}' में से एक अपेक्षित है
- चेतावनी:यह संस्करण केवल 2 तक के एसडीके एक्सएमएल संस्करणों को समझता है लेकिन संस्करण 3 की एक एसडीके एक्सएमएल फ़ाइल सामने आई थी। ऐसा तब हो सकता है जब आप एंड्रॉइड स्टूडियो के संस्करणों और कमांड-लाइन टूल का उपयोग करते हैं जो अलग-अलग समय पर जारी किए गए थे
- अपने फ़्लटर एप्लिकेशन में एंड्रॉइड फ़ोल्डर को एक स्टैंडअलोन प्रोजेक्ट के रूप में खोलें
- फ़ाइल → प्रोजेक्ट संरचना पर क्लिक करें:
- ग्रैडल संस्करण को किसी नवीनतम संस्करण में बदलें और जो आपके द्वारा उपयोग किए जा रहे वर्तमान एंड्रॉइड स्टूडियो संस्करण से मेल खाता हो