यह पृष्ठ उन एकता-विशिष्ट समस्याओं के लिए सुझाव और समस्या निवारण प्रदान करता है जिनका सामना आपको Firebase का उपयोग करते समय करना पड़ सकता है।
अन्य चुनौतियाँ हैं या आपकी समस्या नीचे उल्लिखित नहीं है? अधिक पैन-Firebase या उत्पाद-विशिष्ट FAQ के लिए मुख्य Firebase FAQ देखना सुनिश्चित करें।
एकता 2017.x और बाद में उपयोग करते समय .NET संगतता
फायरबेस यूनिटी 2017 और बाद में प्रायोगिक बिल्ड विकल्प के रूप में .NET 4.x का समर्थन करता है। फायरबेस प्लगइन्स .NET के पुराने संस्करणों में कुछ .NET 4.x कक्षाएं प्रदान करने के लिए पार्स एसडीके के घटकों का उपयोग करते हैं।
इसलिए, फायरबेस यूनिटी एसडीके संस्करण 5.4.0
और बाद में ऐसे प्लगइन्स प्रदान करते हैं जो फायरबेस यूनिटी एसडीके की dotnet3
और dotnet4
निर्देशिकाओं में .NET 3.x या .NET 4.x के साथ संगत हैं।
यदि आप एक फायरबेस प्लगइन आयात करते हैं जो आपके प्रोजेक्ट में सक्षम .NET संस्करण के साथ असंगत है, तो आप पार्स एसडीके द्वारा कार्यान्वित किए गए .NET ढांचे में कुछ प्रकार से संकलित त्रुटियां देखेंगे।
यदि आप .NET 3.x का उपयोग कर रहे हैं, तो संकलन त्रुटि को हल करने के लिए:
- सभी प्लेटफ़ॉर्म के लिए निम्न DLL को निकालें या अक्षम करें:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- सभी प्लेटफॉर्म के लिए निम्नलिखित डीएलएल सक्षम करें:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
यदि आप .NET 4.x का उपयोग कर रहे हैं, तो संकलन त्रुटि को हल करने के लिए:
- सभी प्लेटफ़ॉर्म के लिए निम्न DLL को निकालें या अक्षम करें:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- सभी प्लेटफॉर्म के लिए निम्नलिखित डीएलएल सक्षम करें:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
अगर आप कोई दूसरा Firebase प्लग इन इंपोर्ट करते हैं:
- अपने यूनिटी प्रोजेक्ट में, अपने प्रोजेक्ट के लिए सही डीएलएल को सक्षम करने के लिए एसेट्स > प्ले सर्विसेज रिजॉल्वर > वर्जन हैंडलर > अपडेट पर नेविगेट करें।
एकता 2017.1 .NET 4.x परियोजनाओं में IL2CPP संकलन
फायरबेस यूनिटी 2017 और बाद में प्रायोगिक बिल्ड विकल्प के रूप में .NET 4.x का समर्थन करता है। फायरबेस प्लगइन्स .NET के पुराने संस्करणों में कुछ .NET 4.x कक्षाएं प्रदान करने के लिए पार्स एसडीके के घटकों का उपयोग करते हैं।
इसलिए, फायरबेस यूनिटी एसडीके संस्करण 5.4.0 और बाद में टाइप अग्रेषण डीएलएल प्रदान करता है जो पार्स प्रकारों को आगे बढ़ाता है (उदाहरण के लिए, System.Threading.Tasks.Task
का पार्स कार्यान्वयन) .NET ढांचे में। दुर्भाग्य से, IL2CPP (एक ट्रांसपिलर जो C# को C++ में कनवर्ट करता है) जिसे यूनिटी 2017.1.x में शिप किया जाता है, सही प्रकार से DLL को अग्रेषित करने की प्रक्रिया नहीं करता है जिसके परिणामस्वरूप निम्न के समान बिल्ड त्रुटियां होती हैं:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
यूनिटी 2017.1 में .NET 4.x IL2CPP बिल्ड त्रुटियों के लिए वर्तमान में कोई समाधान उपलब्ध नहीं है, इसलिए आपको IL2CPP के साथ संकलित परियोजनाओं में .NET 4.x का उपयोग करने के लिए यूनिटी 2017.2 या बाद के संस्करण में अपग्रेड करना होगा।
एकता 2017.2 नेटवर्किंग
Firebase रीयलटाइम डेटाबेस .NET नेटवर्किंग स्टैक का उपयोग करके TLS नेटवर्क कनेक्शन बनाता है। टीएलएस कार्यक्षमता यूनिटी 2017.2 में टूट गई है जब .NET 4.6 का उपयोग करते हुए संपादकों और डेस्कटॉप पर रीयलटाइम डेटाबेस प्लगइन विफल हो जाता है।
इस समस्या का कोई समाधान नहीं है, इसलिए आपको एकता के भिन्न संस्करण का उपयोग करना चाहिए, उदाहरण के लिए 2017.1 या 2017.3 संस्करण।
Unity 2020 . में गुम Firebase Android कॉन्फ़िग फ़ाइल
एकता के उन संस्करणों का समर्थन करने के लिए जिनमें ग्रैडल बिल्ड को अनुकूलित करने की क्षमता नहीं है, फायरबेस संपादक टूल Assets/Plugins/Android/Firebase/res/values/google-services.xml
को एक एंड्रॉइड संसाधन के रूप में एक में पैक करने के लिए उत्पन्न करता है। एंड्रॉइड बिल्ड, ताकि फ़ायरबेस एसडीके डिफ़ॉल्ट फ़ायरबेस ऐप इंस्टेंस को प्रारंभ करने के लिए इसका उपयोग कर सके।
एकता 2020 में, सभी Android संसाधन .androidlib
प्रत्यय वाली निर्देशिकाओं में होने चाहिए। अगर आपका प्रोजेक्ट ऐसे Firebase SDK का इस्तेमाल कर रहा है जो Assets/Plugins/Android/Firebase
डायरेक्टरी जेनरेट करता है, तो उसका नाम बदलकर Assets/Plugins/Android/Firebase.androidlib
कर दें। सुनिश्चित करें कि इसमें AndroidManifest.xml
, project.properties
और res/values/google-services.xml
शामिल हैं।
एंड्रॉइड ऐप बनाते समय सिंगल डेक्स के साथ एक समस्या
एंड्रॉइड ऐप का निर्माण करते समय, आपको एकल डेक्स फ़ाइल होने से संबंधित बिल्ड विफलता का सामना करना पड़ सकता है। यदि आपका प्रोजेक्ट ग्रैडल बिल्ड सिस्टम का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो त्रुटि संदेश निम्न के जैसा दिखता है।
Cannot fit requested classes in a single dex file.
Dalvik Executable ( .dex
) फाइलों का उपयोग एंड्रॉइड एप्लिकेशन ( .apk
) के लिए क्लास डेफिनिशन और उनके संबंधित सहायक डेटा के एक सेट को रखने के लिए किया जाता है। एक एकल डेक्स फ़ाइल 65,536 विधियों के संदर्भ तक सीमित है। यदि आपके प्रोजेक्ट में सभी Android लाइब्रेरी से विधियों की कुल संख्या इस सीमा से अधिक है, तो बिल्ड विफल हो जाएगा।
यूनिटी ने 2017 में मिनिफिकेशन की शुरुआत की, जो अप्रयुक्त कोड को हटाने के लिए प्रोगार्ड (या यूनिटी के कुछ संस्करणों में अन्य टूल्स) का उपयोग करता है, जो एक एकल डीएक्स फ़ाइल में संदर्भित विधियों की कुल संख्या को कम कर सकता है। विकल्प प्लेयर सेटिंग्स > एंड्रॉइड > प्रकाशन सेटिंग्स > छोटा करें में पाया जा सकता है। एकता के विभिन्न संस्करणों में विकल्प भिन्न हो सकते हैं इसलिए आधिकारिक एकता दस्तावेज़ देखें।
यदि संदर्भित विधियों की संख्या अभी भी सीमा से अधिक है, तो दूसरा विकल्प multidex
को सक्षम करना है। एकता में इसे प्राप्त करने के कई तरीके हैं:
- यदि
Player Settings
के अंतर्गतCustom Gradle Template
सक्षम है,mainTemplate.gradle
को संशोधित करें। - यदि आप निर्यात किए गए प्रोजेक्ट को बनाने के लिए Android Studio का उपयोग करते हैं, तो मॉड्यूल-स्तरीय
build.gradle
फ़ाइल को संशोधित करें।
अधिक विवरण मल्टीडेक्स उपयोगकर्ता मार्गदर्शिका में पाया जा सकता है।
जावा 8 सपोर्ट और एंड्रॉइड के लिए डिसुगरिंग यूनिटी 2017 और यूनिटी 2018 में बनाता है (फायरबेस यूनिटी एसडीके 8.0.0 और उच्चतर)
मई 2021 (Firebase BoM v28.0.0) में, Firebase ने अपने सभी Android पुस्तकालयों के लिए डिसगरिंग को अक्षम कर दिया ( रिलीज़ नोट देखें)। फायरबेस यूनिटी एसडीके (8.0.0 और उच्चतर) के साथ एक एंड्रॉइड ऐप बनाते समय, आपको निम्न बिल्ड त्रुटि दिखाई दे सकती है:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
यह परिवर्तन केवल यूनिटी 2017 और यूनिटी 2018 में Android बिल्ड को प्रभावित करता है। यूनिटी के नए संस्करण ग्रैडल बिल्ड फाइलों में डिफ़ॉल्ट रूप से compileOptions
ब्लॉक जोड़ते हैं। यूनिटी 2017 और यूनिटी 2018 में इस बिल्ड त्रुटि को ठीक करने के लिए, निम्न में से कोई एक कार्य करें:
अपने ग्रेडल टेम्प्लेट में एक
compileOptions
ब्लॉक जोड़ें:- बिल्ड सिस्टम के रूप में
Gradle
का उपयोग करें। -
Player Settings
के तहतCustom Gradle Template
सक्षम करें। निम्नलिखित पंक्तियों को
mainTemplate.gradle
में जोड़ें (या मॉड्यूल स्तरbuild.gradle
यदि Android Studio के लिए कोई प्रोजेक्ट निर्यात कर रहा है):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- बिल्ड सिस्टम के रूप में
वैकल्पिक रूप से, अपने Android प्रोजेक्ट के लिए minSdkVersion को 26 या उससे अधिक तक बढ़ाएँ।
Android समस्या निवारण भी देखें - बिल्ड विफलताओं को कम करना।
Cocoapods के साथ iOS के लिए निर्माण करते समय समस्याएं
IOS के लिए निर्माण करते समय, भाषा स्थान, या UTF-8 एन्कोडिंग के बारे में त्रुटि के साथ Cocoapod स्थापना विफल हो सकती है। इस मुद्दे को हल करने के लिए वर्तमान में कई अलग-अलग तरीके हैं।
टर्मिनल से, सीधे
pod install
चलाएँ, और परिणामी xcworkspace फ़ाइल खोलें।Cocoapods के संस्करण को 1.10.2 पर डाउनग्रेड करें। समस्या केवल संस्करण 1.11 और नए में मौजूद है।
अपने
~/.bash_profile
या समकक्ष में,export LANG=en_US.UTF-8
फायरबेस यूनिटी एसडीके के संस्करण को कैसे अपडेट करें
फायरबेस यूनिटी एसडीके के संस्करणों को अपडेट करने की प्रक्रिया इस बात पर निर्भर करती है कि उन्हें शुरू में कैसे आयात किया गया था। यहाँ दो वैकल्पिक आयात विधियाँ हैं:
- आपके प्रोजेक्ट की
Assets/
निर्देशिका के अंतर्गत.unitypackage
फ़ाइलें आयात करना - यूनिटी पैकेज मैनेजर (UPM) का उपयोग करके आयात करना
- यह एकता 2018.4+ में पैकेज प्रबंधित करने का अनुशंसित तरीका है।
- भविष्य के संस्करण अपडेट को आसान बनाने के लिए और अपने
Assets/
निर्देशिका को क्लीनर बनाने के लिए इस पद्धति का उपयोग करें।
अपने यूनिटी प्रोजेक्ट में, आपको अपने सभी फायरबेस पैकेजों को प्रबंधित करने के लिए केवल एक आयात विधि का उपयोग करना चाहिए। नीचे दिए गए निर्देशों का उपयोग न केवल अलग-अलग पैकेजों के संस्करण को अद्यतन करने के लिए किया जा सकता है, बल्कि यदि आवश्यक हो, तो पैकेज प्रबंधन को UPM (अनुशंसित आयात विधि) में स्थानांतरित करने के लिए भी किया जा सकता है।
अगर Firebase पैकेज Assets/
निर्देशिका में हैं, तो आपके पास SDK वर्शन को अपडेट करने के लिए दो विकल्प हैं:
विकल्प 1 (अनुशंसित) : यूपीएम का उपयोग करने के लिए माइग्रेट करें (एकता 2018.4+ में उपलब्ध)
- पैकेज प्रबंधन को UPM में माइग्रेट करने के लिए Firebase द्वारा दिए गए निर्देशों का पालन करें।
- हालांकि इस पद्धति के लिए
.unitypackage
वर्कफ़्लो का उपयोग जारी रखने की तुलना में अधिक प्रारंभिक सेटअप की आवश्यकता होती है, यह बाद के एसडीके संस्करण अपडेट में आसानी से भुगतान करता है।
विकल्प 2 :
.unitypackage
फ़ाइलों कोAssets/
निर्देशिका में आयात करने के लिए उपयोग करना जारी रखेंअद्यतन संस्करण के लिए प्रत्येक पैकेज को आयात करें।
अगर आप Firebase वेबसाइट से firebase_unity_sdk.zip डाउनलोड करते हैं, तो सुनिश्चित करें कि आप सभी
.unitypackages
को सहीdotnet
फ़ोल्डर से आयात करते हैं।- यदि आप एकता 2019 या बाद के संस्करण का उपयोग कर रहे हैं, तो
dotnet4
फ़ोल्डर से आयात करें। - अन्यथा, प्लेयर सेटिंग्स में स्क्रिप्टिंग रनटाइम संस्करण का चयन करें, और यदि यह ".NET 3.x" पर सेट है, तो
dotnet3
फ़ोल्डर से आयात करें।
- यदि आप एकता 2019 या बाद के संस्करण का उपयोग कर रहे हैं, तो
पहले आयात किए गए पैकेज संस्करणों के ओवरराइटिंग को बाहरी निर्भरता प्रबंधक द्वारा स्वचालित रूप से नियंत्रित किया जाना चाहिए (जो आपके द्वारा Firebase
.unitypackages
आयात करते समय स्वचालित रूप से शामिल हो जाता है)।हालांकि, अगर और केवल अगर यह स्वचालित प्रक्रिया विफल हो जाती है, तो आपको निम्नलिखित फ़ोल्डरों को मैन्युअल रूप से हटाना होगा और फिर उपरोक्त आयात चरण को फिर से प्रयास करना होगा।
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
अगर Firebase पैकेज UPM द्वारा प्रबंधित किए जाते हैं, तो नए SDK संस्करण को .tgz
के रूप में आयात करें । यह आयात स्वचालित रूप से पिछले संस्करण को अधिलेखित कर देगा।