समस्या का हल करना & Unity और Firebase के बारे में अक्सर पूछे जाने वाले सवाल

इस पेज पर Unity से जुड़ी समस्याओं को हल करने और सलाह के बारे में बताया गया है जो आपको Firebase का इस्तेमाल करते समय मिल सकती है.

क्या आपके पास अन्य चुनौतियां हैं या क्या आपको नीचे दी गई अपनी समस्या नहीं दिख रही है? पक्का करें कि पैन-Firebase के बारे में ज़्यादा जानने के लिए, Firebase के बारे में अक्सर पूछे जाने वाले मुख्य सवाल देखें या किसी खास प्रॉडक्ट के बारे में अक्सर पूछे जाने वाले सवाल.

Unity 2017.x और इसके बाद के वर्शन में, .NET के साथ काम करने की सुविधा

Firebase, Unity 2017 में एक्सपेरिमेंट के तौर पर उपलब्ध .NET 4.x वर्शन के साथ काम करता है बाद में. Firebase प्लगिन पार्स SDK टूल का इस्तेमाल करके, .NET के पुराने वर्शन में.NET 4 .x क्लास.

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

अगर कोई ऐसा Firebase प्लग इन इंपोर्ट किया जाता है जो .NET वर्शन के साथ काम नहीं करता चालू है, तो आपको .NET फ़्रेमवर्क जिसे पार्स SDK टूल लागू करता है.

अगर .NET 3.x का इस्तेमाल किया जा रहा है, तो कंपाइलेशन की गड़बड़ी को ठीक करने के लिए:

  1. सभी प्लैटफ़ॉर्म के लिए, नीचे दिए गए डीएलएल हटाएं या बंद करें:
    • 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. सभी प्लैटफ़ॉर्म के लिए, नीचे दिए गए डीएलएल हटाएं या बंद करें:
    • Parse/Plugins/Unity.Compat.dll
    • Parse/Plugins/Unity.Tasks.dll
  2. सभी प्लैटफ़ॉर्म के लिए ये डीएलएल चालू करें:
    • Parse/Plugins/dotNet45/Unity.Compat.dll
    • Parse/Plugins/dotNet45/Unity.Tasks.dll

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

  • अपने Unity प्रोजेक्ट में, यहां जाएं ऐसेट > Play Services का रिज़ॉल्वर > वर्शन हैंडलर > अपडेट करें का इस्तेमाल करें.

.NET 4 .x प्रोजेक्ट में Unity 2017.1 IL2CPP का कंपाइलेशन

Firebase, Unity 2017 में एक्सपेरिमेंट के तौर पर उपलब्ध .NET 4.x वर्शन के साथ काम करता है बाद में. Firebase प्लगिन पार्स SDK टूल का इस्तेमाल करके, .NET के पुराने वर्शन में.NET 4 .x क्लास.

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

फ़िलहाल, Unity 2017.1 में.NET 4 .x का इस्तेमाल करने के लिए, आपको Unity 2017.2 या इसके बाद के वर्शन में अपग्रेड करना होगा IL2CPP के साथ कंपाइल किए गए प्रोजेक्ट.

Unity 2017.2 का नेटवर्किंग

Firebase रीयलटाइम डेटाबेस, .NET नेटवर्किंग का इस्तेमाल करके TLS नेटवर्क कनेक्शन बनाता है स्टैक. .NET 4 .6 का इस्तेमाल करते समय, Unity 2017.2 में TLS की सुविधा काम नहीं कर रही रीयलटाइम डेटाबेस प्लगिन को एडिटर और डेस्कटॉप पर पूरा नहीं किया जा सकता.

इस समस्या का कोई समाधान नहीं है, इसलिए आपको Unity, उदाहरण के लिए, 2017.1 या 2017.3.

Unity 2020 में Firebase की Android कॉन्फ़िगरेशन फ़ाइल मौजूद नहीं है

Unity के ऐसे वर्शन पर काम करने के लिए जिनमें Gradle बिल्ड को पसंद के मुताबिक बनाता है, तो Firebase एडिटर टूल Android के तौर पर Assets/Plugins/Android/Firebase/res/values/google-services.xml संसाधन को किसी Android बिल्ड में पैकेज किया जाना चाहिए, ताकि Firebase SDK इसे डिफ़ॉल्ट FirebaseApp इंस्टेंस शुरू करने के लिए इस्तेमाल किया जाएगा.

Unity 2020 में, Android के सभी संसाधन, डायरेक्ट्री में .androidlib सफ़िक्स. अगर आपके प्रोजेक्ट में किसी ऐसे Firebase SDK टूल का इस्तेमाल हो रहा है जो Assets/Plugins/Android/Firebase डायरेक्ट्री, इसका नाम बदलकर यह करें Assets/Plugins/Android/Firebase.androidlib. पक्का करें कि इसमें ये चीज़ें शामिल हों AndroidManifest.xml, project.properties, और res/values/google-services.xml.

Android ऐप्लिकेशन बनाते समय सिंगल डेक्स से जुड़ी समस्या

Android ऐप्लिकेशन बनाते समय, आपको ऐप्लिकेशन बनाने में समस्या हो सकती है, जिसमें में खोजने की सुविधा देता है. गड़बड़ी का मैसेज कुछ जैसा दिखता है. अगर आपके प्रोजेक्ट को Gradle बिल्ड सिस्टम का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है.

Cannot fit requested classes in a single dex file.

डलास की एक्ज़ीक्यूटेबल (.dex) फ़ाइलों का इस्तेमाल, क्लास की परिभाषाओं का सेट होल्ड करने के लिए किया जाता है और Android ऐप्लिकेशन (.apk) के लिए उनका सहायक डेटा मौजूद है. सिंगल डेक्स फ़ाइल 65,536 तरीकों तक सीमित है. बिल्ड फ़ेल हो जाएगा, अगर कुल आपके प्रोजेक्ट में सभी Android लाइब्रेरी के तरीकों की संख्या इस सीमा से ज़्यादा है.

Unity ने छोटा करने की सुविधा शुरू की 2017.2 में हुई, जो ProGuard (या Unity के कुछ वर्शन में अन्य टूल) का इस्तेमाल करती है अप्रयुक्त कोड को हटाने के लिए, जिससे में रेफ़रंस के तरीके दिए गए होंगे. विकल्प यहां मिल सकता है प्लेयर सेटिंग > Android > प्रकाशन सेटिंग > छोटा करें. ये विकल्प हो सकते हैं Unity के अलग-अलग वर्शन में अलग-अलग हैं, इसलिए आधिकारिक Unity को देखें दस्तावेज़.

अगर रेफ़र किए गए तरीकों की संख्या अब भी तय सीमा से ज़्यादा है, तो दूसरा विकल्प multidex को चालू करने के लिए. Unity में ऐसा करने के कई तरीके हैं:

  • अगर Player Settings से कम की Custom Gradle Template सुविधा चालू है, mainTemplate.gradle बदलें.
  • अगर एक्सपोर्ट किए गए प्रोजेक्ट को बनाने के लिए Android Studio का इस्तेमाल किया जाता है, तो बदलाव करें मॉड्यूल-लेवल की build.gradle फ़ाइल.

मल्टीडेक्स उपयोगकर्ता गाइड में ज़्यादा जानकारी मिल सकती है.

Unity 2017 और Unity 2018 (Firebase Unity SDK 8.0.0 और इसके बाद के वर्शन) में Android के लिए Java 8 सहायता और वर्शन बनाना

Firebase ने मई 2021 (Firebase BoM v28.0.0) में, अपनी सभी 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

इस बदलाव का असर, सिर्फ़ Unity 2017 और Unity 2018 में Android के बिल्ड पर पड़ेगा. Unity के नए वर्शन, ग्रेडल बिल्ड फ़ाइलों में डिफ़ॉल्ट रूप से compileOptions ब्लॉक को जोड़ते हैं. Unity 2017 और Unity 2018 में बिल्ड की इस गड़बड़ी को ठीक करने के लिए, इनमें से कोई एक काम करें:

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

    1. बिल्ड सिस्टम के तौर पर Gradle का इस्तेमाल करें.
    2. Player Settings से कम Custom Gradle Template चालू करें.
    3. mainTemplate.gradle में ये लाइनें जोड़ें (या अगर Android Studio के लिए कोई प्रोजेक्ट एक्सपोर्ट किया जा रहा है, तो मॉड्यूल लेवल build.gradle पर) जोड़ें:

      android {
          compileOptions {
              sourceCompatibility 1.8
              targetCompatibility 1.8
          }
      }
      
  • इसके अलावा, अपने Android प्रोजेक्ट के लिए minSdkVersion को 26 या उससे ज़्यादा तक बढ़ाएं.

Android की समस्या का हल - बिल्ड से जुड़ी गड़बड़ियां भी देखें.

Cocoapods के साथ iOS के लिए ऐप्लिकेशन बनाते समय आने वाली समस्याएं

iOS के लिए बनाते समय, Cocoapod इंस्टॉलेशन विफल हो सकता है भाषा की स्थान-भाषा या UTF-8 एन्कोडिंग. फ़िलहाल, ऐसे कई तरीके हैं जिनका इस्तेमाल ताकि हम समस्या पर काम कर सकें.

  • टर्मिनल से, सीधे pod install चलाएं और फिर उससे मिला नतीजा खोलें xcworkspace फ़ाइल होगी.

  • Cocoapods के वर्शन को 1.10.2 में डाउनग्रेड करें. समस्या केवल यहां मौजूद है वर्शन 1.11 और इसके बाद के वर्शन हैं.

  • अपने ~/.bash_profile या इसके बराबर की किसी वैल्यू में, export LANG=en_US.UTF-8 जोड़ें

Firebase यूनिटी SDK टूल के वर्शन को अपडेट करने का तरीका

Firebase यूनिटी SDK टूल के वर्शन को अपडेट करने की प्रोसेस, इस बात पर निर्भर करती है कि जिन्हें शुरुआत में इंपोर्ट किया गया था. यहां इंपोर्ट करने के दो वैकल्पिक तरीके बताए गए हैं:

  • आपके प्रोजेक्ट की Assets/ डायरेक्ट्री में, .unitypackage फ़ाइलों को इंपोर्ट किया जा रहा है
  • इसका उपयोग करके आयात करना Unity पैकेज मैनेजर (यूपीएम)
    • Unity 2018.4 के बाद के वर्शन में पैकेज मैनेज करने के लिए, यह सुझाया गया तरीका है.
    • आने वाले समय में आसानी से अपडेट करने और अपने Assets/ के लिए, इस तरीके का इस्तेमाल करें डायरेक्ट्री क्लीनर.

अपने Unity प्रोजेक्ट में, आपको इंपोर्ट करने का सिर्फ़ एक तरीका इस्तेमाल करना चाहिए. Firebase पैकेज. नीचे दिए गए निर्देशों का इस्तेमाल, न सिर्फ़ अलग-अलग पैकेज के वर्शन के साथ-साथ, अगर ज़रूरी हो, तो पैकेज को माइग्रेट करने के लिए भी मैनेजमेंट से जुड़ी प्रक्रिया को UPM में बदलना चाहते हैं (इंपोर्ट करने का सुझाया गया तरीका).