Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

यह पृष्ठ एकता-विशिष्ट समस्याओं के लिए युक्तियां और समस्या निवारण प्रदान करता है, जिनका सामना आपको 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 का उपयोग कर रहे हैं:

  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 प्लग इन आयात करते हैं:

  • अपने यूनिटी प्रोजेक्ट में, अपने प्रोजेक्ट के लिए सही 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 ब्लॉक जोड़ें:

    1. बिल्ड सिस्टम के रूप में Gradle प्रयोग करें।
    2. Player Settings के अंतर्गत Custom Gradle Template सक्षम करें।
    3. निम्नलिखित पंक्तियों को 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/ निर्देशिका को साफ करने के लिए इस विधि का उपयोग करें।

अपने यूनिटी प्रोजेक्ट में, आपको अपने सभी फायरबेस पैकेजों को प्रबंधित करने के लिए केवल एक आयात विधि का उपयोग करना चाहिए। नीचे दिए गए निर्देशों का उपयोग न केवल अलग-अलग पैकेजों के संस्करण को अपडेट करने के लिए किया जा सकता है, बल्कि यदि आवश्यक हो, तो पैकेज प्रबंधन को यूपीएम (अनुशंसित आयात विधि) में माइग्रेट करने के लिए भी किया जा सकता है।