यह पृष्ठ एकता-विशिष्ट समस्याओं के लिए युक्तियां और समस्या निवारण प्रदान करता है, जिनका सामना आपको Firebase का उपयोग करते समय हो सकता है।
अन्य चुनौतियाँ हैं या आपकी समस्या नीचे उल्लिखित नहीं है? अधिक पैन-Firebase या उत्पाद-विशिष्ट FAQ के लिए मुख्य Firebase FAQ देखना सुनिश्चित करें।
एकता 2017.x और बाद में उपयोग करते समय .NET संगतता
फायरबेस एकता 2017 और बाद में एक प्रयोगात्मक निर्माण विकल्प के रूप में .NET 4.x का समर्थन करता है। Firebase प्लगइन्स .NET के पुराने संस्करणों में कुछ .NET 4.x कक्षाएं प्रदान करने के लिए Parse SDK के घटकों का उपयोग करते हैं।
इसलिए, फायरबेस यूनिटी एसडीके संस्करण 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 प्लग इन आयात करते हैं:
- अपने यूनिटी प्रोजेक्ट में, अपने प्रोजेक्ट के लिए सही DLL को सक्षम करने के लिए एसेट्स > प्ले सर्विसेज रिज़ॉल्वर > वर्जन हैंडलर > अपडेट पर नेविगेट करें।
एकता 2017.1 .NET 4.x परियोजनाओं में IL2CPP संकलन
फायरबेस एकता 2017 और बाद में एक प्रयोगात्मक निर्माण विकल्प के रूप में .NET 4.x का समर्थन करता है। Firebase प्लगइन्स .NET के पुराने संस्करणों में कुछ .NET 4.x कक्षाएं प्रदान करने के लिए Parse SDK के घटकों का उपयोग करते हैं।
इसलिए, फायरबेस यूनिटी एसडीके संस्करण 5.4.0 और बाद में टाइप फॉरवर्डिंग डीएलएल प्रदान करता है जो पार्स प्रकार (उदाहरण के लिए, System.Threading.Tasks.Task
का पार्स कार्यान्वयन) को .NET फ्रेमवर्क में फॉरवर्ड करता है। दुर्भाग्य से, IL2CPP (एक ट्रांसपिलर जो C # को C ++ में परिवर्तित करता है) जिसे Unity 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 नेटवर्क कनेक्शन बनाता है। .NET 4.6 का उपयोग करते समय एकता 2017.2 में टीएलएस कार्यक्षमता टूट गई है, जिससे रियलटाइम डेटाबेस प्लगइन संपादकों और डेस्कटॉप पर विफल हो गया है।
इस समस्या का कोई समाधान नहीं है, इसलिए आपको एकता के किसी भिन्न संस्करण का उपयोग करना चाहिए, उदाहरण के लिए संस्करण 2017.1 या 2017.3।
यूनिटी 2020 में फायरबेस एंड्रॉइड कॉन्फिग फ़ाइल गुम है
एकता के उन संस्करणों का समर्थन करने के लिए जिनमें ग्रैडल बिल्ड को अनुकूलित करने की क्षमता नहीं है, फायरबेस एडिटर टूल Assets/Plugins/Android/Firebase/res/values/google-services.xml
एंड्रॉइड संसाधन के रूप में पैक करने के लिए उत्पन्न करता है। Android बिल्ड, ताकि Firebase SDK डिफ़ॉल्ट FirebaseApp इंस्टेंस को इनिशियलाइज़ करने के लिए इसका उपयोग कर सके।
यूनिटी 2020 में, सभी Android संसाधनों को एक .androidlib
प्रत्यय के साथ निर्देशिकाओं में होना चाहिए। यदि आपकी परियोजना एक Assets/Plugins/Android/Firebase
निर्देशिका उत्पन्न करने वाले फायरबेस एसडीके का उपयोग कर रही है, तो इसका नाम बदलकर Assets/Plugins/Android/Firebase.androidlib
कर दें। सुनिश्चित करें कि इसमें AndroidManifest.xml
, project.properties
और res/values/google-services.xml
शामिल हैं।
एंड्रॉइड ऐप बनाते समय सिंगल डेक्स के साथ एक समस्या
Android एप्लिकेशन बनाते समय, आपको एकल डेक्स फ़ाइल होने से संबंधित बिल्ड विफलता का सामना करना पड़ सकता है। यदि आपका प्रोजेक्ट ग्रैडल बिल्ड सिस्टम का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो त्रुटि संदेश निम्न जैसा दिखता है।
Cannot fit requested classes in a single dex file.
Dalvik निष्पादन योग्य ( .dex
) फ़ाइलों का उपयोग एंड्रॉइड एप्लिकेशन ( .apk
) के लिए कक्षा परिभाषाओं और उनके संबंधित सहायक डेटा का एक सेट रखने के लिए किया जाता है। एक एकल डेक्स फ़ाइल 65,536 विधियों के संदर्भ तक सीमित है। यदि आपकी परियोजना में सभी Android पुस्तकालयों से विधियों की कुल संख्या इस सीमा से अधिक हो जाती है, तो निर्माण विफल हो जाएगा।
यूनिटी ने 2017.2 में मिनिफिकेशन की शुरुआत की, जो अप्रयुक्त कोड को हटाने के लिए प्रोगुआर्ड (या यूनिटी के कुछ संस्करणों में अन्य उपकरण) का उपयोग करता है, जो एकल डेक्स फ़ाइल में संदर्भित विधियों की कुल संख्या को कम कर सकता है। विकल्प प्लेयर सेटिंग > Android > प्रकाशन सेटिंग > छोटा करें में पाया जा सकता है। एकता के विभिन्न संस्करणों में विकल्प भिन्न हो सकते हैं इसलिए आधिकारिक एकता दस्तावेज देखें।
यदि संदर्भित विधियों की संख्या अभी भी सीमा से अधिक है, तो दूसरा विकल्प multidex
सक्षम करना है। एकता में इसे प्राप्त करने के कई तरीके हैं:
- यदि
Player Settings
के अंतर्गतCustom Gradle Template
सक्षम है, तोmainTemplate.gradle
को संशोधित करें। - यदि आप निर्यात किए गए प्रोजेक्ट को बनाने के लिए एंड्रॉइड स्टूडियो का उपयोग करते हैं, तो मॉड्यूल-स्तरीय
build.gradle
फ़ाइल को संशोधित करें।
अधिक विवरण मल्टीडेक्स उपयोगकर्ता मार्गदर्शिका में पाया जा सकता है।
एकता 2017 और एकता 2018 (फायरबेस यूनिटी एसडीके 8.0.0 और उच्चतर) में एंड्रॉइड बिल्ड के लिए जावा 8 समर्थन और डिसुगरिंग
मई 2021 (Firebase BoM v28.0.0) में, Firebase ने अपने सभी Android पुस्तकालयों के लिए डिसगरिंग को अक्षम कर दिया ( रिलीज़ नोट देखें)। Firebase Unity SDK (8.0.0 और उच्चतर) के साथ Android ऐप बनाते समय, आपको निम्न बिल्ड त्रुटि दिखाई दे सकती है:
> 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
में जोड़ें (या Android स्टूडियो के लिए एक परियोजना निर्यात करते समय मॉड्यूल स्तरbuild.gradle
):android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- बिल्ड सिस्टम के रूप में
वैकल्पिक रूप से, अपने Android प्रोजेक्ट के लिए minSdkVersion को 26 या उससे ऊपर तक बढ़ाएँ।
Android समस्या निवारण - डिसुगरिंग बिल्ड विफलताएं भी देखें।
Cocoapods के साथ iOS के लिए निर्माण करते समय समस्याएँ
आईओएस के लिए निर्माण करते समय, कोकोपोड स्थापना भाषा लोकेल, या यूटीएफ -8 एन्कोडिंग के बारे में त्रुटि के साथ विफल हो सकती है। वर्तमान में समस्या को हल करने के कई अलग-अलग तरीके हैं।
टर्मिनल से,
pod install
सीधे चलाएं, और परिणामी xcworkspace फ़ाइल खोलें।Cocoapods के संस्करण को 1.10.2 में डाउनग्रेड करें। समस्या केवल 1.11 और नए संस्करण में मौजूद है।
अपने
~/.bash_profile
या समकक्ष में,export LANG=en_US.UTF-8
जोड़ें
फायरबेस यूनिटी एसडीके के संस्करण को कैसे अपडेट करें
फायरबेस यूनिटी एसडीके के संस्करणों को अपडेट करने की प्रक्रिया इस बात पर निर्भर करती है कि उन्हें प्रारंभ में कैसे आयात किया गया था। यहाँ दो वैकल्पिक आयात विधियाँ हैं:
- आपके प्रोजेक्ट की
Assets/
निर्देशिका के अंतर्गत.unitypackage
फ़ाइलें आयात करना - यूनिटी पैकेज मैनेजर (UPM) का उपयोग करके आयात करना
- यूनिटी 2018.4+ में संकुल प्रबंधन के लिए यह अनुशंसित तरीका है।
- भविष्य के संस्करण अपडेट को आसान बनाने और अपनी
Assets/
निर्देशिका को साफ करने के लिए इस विधि का उपयोग करें।
अपने यूनिटी प्रोजेक्ट में, आपको अपने सभी फायरबेस पैकेजों को प्रबंधित करने के लिए केवल एक आयात विधि का उपयोग करना चाहिए। नीचे दिए गए निर्देशों का उपयोग न केवल अलग-अलग पैकेजों के संस्करण को अपडेट करने के लिए किया जा सकता है, बल्कि यदि आवश्यक हो, तो पैकेज प्रबंधन को यूपीएम (अनुशंसित आयात विधि) में माइग्रेट करने के लिए भी किया जा सकता है।
यदि फायरबेस पैकेज Assets/
निर्देशिका में हैं, तो आपके पास एसडीके संस्करण को अपडेट करने के लिए दो विकल्प हैं:
विकल्प 1 (अनुशंसित) : UPM का उपयोग करने के लिए माइग्रेट करें (यूनिटी 2018.4+ में उपलब्ध)
- पैकेज प्रबंधन को UPM में माइग्रेट करने के लिए Firebase द्वारा दिए गए निर्देशों का पालन करें।
- जबकि इस पद्धति को
.unitypackage
वर्कफ़्लो का उपयोग जारी रखने की तुलना में अधिक प्रारंभिक सेटअप की आवश्यकता होती है, यह बाद के SDK संस्करण अपडेट में आसानी से भुगतान करता है।
विकल्प 2 :
.unitypackage
फ़ाइलों कोAssets/
निर्देशिका में आयात करने के लिए उनका उपयोग करना जारी रखेंअद्यतन संस्करण के लिए प्रत्येक संकुल को आयात करें।
यदि आप Firebase_unity_sdk.zip को Firebase वेबसाइट से डाउनलोड करते हैं, तो सुनिश्चित करें कि आपने सभी
.unitypackages
सहीdotnet
फ़ोल्डर से आयात किया है।- यदि आप एकता 2019 या बाद के संस्करण का उपयोग कर रहे हैं, तो
dotnet4
फ़ोल्डर से आयात करें। - अन्यथा, प्लेयर सेटिंग्स में स्क्रिप्टिंग रनटाइम संस्करण का चयन करें, और यदि यह ".NET 3.x" पर सेट है, तो
dotnet3
फ़ोल्डर से आयात करें।
- यदि आप एकता 2019 या बाद के संस्करण का उपयोग कर रहे हैं, तो
पहले आयातित पैकेज संस्करणों की ओवरराइटिंग को बाहरी निर्भरता प्रबंधक द्वारा स्वचालित रूप से नियंत्रित किया जाना चाहिए (जो स्वचालित रूप से तब शामिल होता है जब आप फायरबेस
.unitypackages
आयात करते हैं)।हालाँकि, अगर और केवल अगर यह स्वचालित प्रक्रिया विफल हो जाती है, तो आपको निम्नलिखित फ़ोल्डरों को मैन्युअल रूप से हटाना होगा और फिर उपरोक्त आयात चरण को फिर से आज़माना होगा।
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
यदि Firebase पैकेज UPM द्वारा प्रबंधित किए जाते हैं, तो नए SDK संस्करण को .tgz
के रूप में आयात करें । यह आयात स्वचालित रूप से पिछले संस्करण को अधिलेखित कर देगा।