एकता और फायरबेस के लिए समस्या निवारण और अक्सर पूछे जाने वाले प्रश्न

यह पृष्ठ उन एकता-विशिष्ट समस्याओं के लिए सुझाव और समस्या निवारण प्रदान करता है जो Firebase का उपयोग करते समय आपके सामने आ सकती हैं।

अन्य चुनौतियाँ हैं या आपकी समस्या नीचे उल्लिखित नहीं है? बाहर की जाँच करने के लिए सुनिश्चित करें कि मुख्य Firebase पूछे जाने वाले प्रश्न अधिक अखिल Firebase या उत्पाद विशिष्ट पूछे जाने वाले प्रश्न के लिए।

एकता 2017.x और बाद में उपयोग करते समय .NET संगतता

फायरबेस यूनिटी 2017 और बाद में प्रायोगिक बिल्ड विकल्प के रूप में .NET 4.x का समर्थन करता है। Firebase प्लग इन की घटकों का उपयोग पार्स एसडीके नेट के पुराने संस्करणों में कुछ नेट 4.x वर्गों प्रदान करते हैं।

इसलिए, Firebase एकता SDK संस्करण 5.4.0 और बाद में करने वाले प्लग इन में से या तो नेट 3.x या .NET 4.x संगत प्रदान dotnet3 और dotnet4 Firebase एकता एसडीके की निर्देशिका।

यदि आप एक फायरबेस प्लगइन आयात करते हैं जो आपके प्रोजेक्ट में सक्षम .NET संस्करण के साथ असंगत है, तो आप पार्स एसडीके द्वारा कार्यान्वित किए गए .NET ढांचे में कुछ प्रकार से संकलन त्रुटियां देखेंगे।

यदि आप .NET 3.x का उपयोग कर रहे हैं, तो संकलन त्रुटि को हल करने के लिए:

  1. सभी प्लेटफ़ॉर्म के लिए निम्न DLL को निकालें या अक्षम करें:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll
  2. सभी प्लेटफॉर्म के लिए निम्नलिखित डीएलएल सक्षम करें:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll

यदि आप .NET 4.x का उपयोग कर रहे हैं, तो संकलन त्रुटि को हल करने के लिए:

  1. सभी प्लेटफ़ॉर्म के लिए निम्न DLL को निकालें या अक्षम करें:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. सभी प्लेटफॉर्म के लिए निम्नलिखित डीएलएल सक्षम करें:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

अगर आप कोई दूसरा Firebase प्लग इन इंपोर्ट करते हैं:

  • अपने एकता परियोजना, संपत्ति के लिए नेविगेट में> सेवाएं रिज़ॉल्वर> संस्करण हैंडलर> अद्यतन अपनी परियोजना के लिए सही DLLs सक्षम करने के लिए खेलते हैं।

एकता 2017.1 .NET 4.x परियोजनाओं में IL2CPP संकलन

फायरबेस यूनिटी 2017 और बाद में प्रायोगिक बिल्ड विकल्प के रूप में .NET 4.x का समर्थन करता है। Firebase प्लग इन की घटकों का उपयोग पार्स एसडीके नेट के पुराने संस्करणों में कुछ नेट 4.x वर्गों प्रदान करते हैं।

इसलिए, Firebase एकता SDK संस्करण 5.4.0 और बाद में प्रकार अग्रेषण DLLs जो पार्स प्रकार आगे (उदाहरण के लिए की, पार्स कार्यान्वयन प्रदान करता है System.Threading.Tasks.Task नेट ढांचे के लिए)। दुर्भाग्य से, 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 कॉन्फ़िग फ़ाइल

एकता के समर्थन संस्करण के लिए आदेश है कि Gradle निर्माण अनुकूलित करने की क्षमता की सुविधा नहीं है, Firebase संपादक उपकरण द्वारा तैयार Assets/Plugins/Android/Firebase/res/values/google-services.xml एक Android संसाधन के रूप में एक में पैक हुए एंड्रॉइड बिल्ड, ताकि फायरबेस एसडीके डिफ़ॉल्ट फायरबेस ऐप इंस्टेंस को इनिशियलाइज़ करने के लिए इसका इस्तेमाल कर सके।

एकता 2020 में, सभी Android संसाधन एक साथ निर्देशिका में होना चाहिए .androidlib प्रत्यय। अपनी परियोजना के एक Firebase एसडीके है कि एक उत्पन्न उपयोग कर रहा है 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 ) फ़ाइलें वर्ग परिभाषाएँ और Android एप्लिकेशन (के लिए उनके संबद्ध सहायक डेटा का एक सेट धारण करने के लिए उपयोग किया जाता है .apk )। एक एकल डेक्स फ़ाइल 65,536 विधियों के संदर्भ तक सीमित है। यदि आपके प्रोजेक्ट में सभी Android लाइब्रेरी से विधियों की कुल संख्या इस सीमा से अधिक है, तो बिल्ड विफल हो जाएगा।

एकता की शुरुआत की minification 2017.2 में है, जो अप्रयुक्त कोड है, जो एक भी डेक्स फ़ाइल में संदर्भित तरीकों की कुल संख्या को कम कर सकते बाहर पट्टी (एकता के कुछ संस्करणों में या अन्य उपकरण) Proguard उपयोग करता है। विकल्प प्लेयर सेटिंग> Android> प्रकाशन सेटिंग> कम करें में पाया जा सकता। एकता के विभिन्न संस्करणों में विकल्प भिन्न हो सकते हैं इसलिए आधिकारिक एकता दस्तावेज़ देखें।

संदर्भित तरीकों की संख्या अभी भी सीमा से अधिक है तो एक अन्य विकल्प सक्षम करने के लिए है multidex । एकता में इसे प्राप्त करने के कई तरीके हैं:

  • यदि Custom Gradle Template के तहत Player Settings सक्षम किया गया है, संशोधित करने mainTemplate.gradle
  • आप एंड्रॉयड स्टूडियो का उपयोग करते हैं निर्यात परियोजना के निर्माण के लिए, मॉड्यूल-स्तर को संशोधित build.gradle फ़ाइल।

अधिक जानकारी में पाया जा सकता multidex उपयोगकर्ता पुस्तिका

जावा 8 सपोर्ट और एंड्रॉइड के लिए डिसुगरिंग यूनिटी 2017 और यूनिटी 2018 में बनाता है (फायरबेस यूनिटी एसडीके 8.0.0 और उच्चतर)

मई 2021 (Firebase बीओएम v28.0.0), अपने सभी एंड्रॉयड पुस्तकालयों के लिए Firebase विकलांग desugaring में (देखें रिहाई नोट )। फायरबेस यूनिटी एसडीके (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 Gradle निर्माण फाइलों में डिफ़ॉल्ट रूप से ब्लॉक। यूनिटी 2017 और यूनिटी 2018 में इस बिल्ड त्रुटि को ठीक करने के लिए, निम्न में से कोई एक कार्य करें:

  • एक जोड़े compileOptions अपने Gradle टेम्पलेट के लिए ब्लॉक:

    1. का प्रयोग करें Gradle निर्माण प्रणाली के रूप में।
    2. सक्षम Custom Gradle Template के तहत Player Settings
    3. में निम्नलिखित पंक्तियां जोड़ें mainTemplate.gradle (या मॉड्यूल स्तर build.gradle अगर एंड्रॉयड स्टूडियो के लिए एक परियोजना का निर्यात):

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • वैकल्पिक रूप से, अपने Android प्रोजेक्ट के लिए minSdkVersion को 26 या उससे अधिक तक बढ़ाएँ।

यह भी देखें एंड्रॉयड समस्या निवारण - desugaring निर्माण विफलताओं

Cocoapods के साथ iOS के लिए निर्माण करते समय समस्याएं

IOS के लिए निर्माण करते समय, भाषा स्थान, या UTF-8 एन्कोडिंग के बारे में त्रुटि के साथ Cocoapod स्थापना विफल हो सकती है। इस मुद्दे को हल करने के लिए वर्तमान में कई अलग-अलग तरीके हैं।

  • टर्मिनल से, रन pod install सीधे, और जिसके परिणामस्वरूप xcworkspace फ़ाइल खोलें।

  • Cocoapods के संस्करण को 1.10.2 पर डाउनग्रेड करें। समस्या केवल संस्करण 1.11 और नए में मौजूद है।

  • अपने में ~/.bash_profile या समकक्ष, ऐड export LANG=en_US.UTF-8