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

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

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

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

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

Cannot fit requested classes in a single dex file.

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

Unity ने 2017.2 में, Minification की सुविधा लॉन्च की थी. इसमें Proguard (या Unity के कुछ वर्शन में मौजूद अन्य टूल) का इस्तेमाल करके, इस्तेमाल न होने वाले कोड को हटाया जाता है. इससे, सिंगल डेक्स फ़ाइल में रेफ़रंस किए गए तरीकों की कुल संख्या कम हो सकती है. यह विकल्प, Player Settings > Android > Publishing Settings > Minify में मौजूद है. Unity के अलग-अलग वर्शन में, विकल्प अलग-अलग हो सकते हैं. इसलिए, Unity का आधिकारिक दस्तावेज़ देखें.

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

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

ज़्यादा जानकारी के लिए, multidex के इस्तेमाल से जुड़ी गाइड देखें.

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

Android के लिए ऐप्लिकेशन बनाते समय, अगर आपने minSdkVersion 23 को टारगेट किया है, तो डेक्सिंग के दौरान गड़बड़ी आ सकती है. आम तौर पर, यह गड़बड़ी Gradle टास्क ':launcher:mergeExtDexDebug' में आती है. इसमें, Android लाइब्रेरी में से किसी एक को "बदला नहीं जा सका" मैसेज दिखता है. ऐसा Android SDK के डिफ़ॉल्ट डेक्स टूल में मौजूद किसी बग की वजह से होता है. ज़्यादातर Unity एडिटर, इस टूल का इस्तेमाल करते हैं. इस समस्या को कुछ अलग-अलग तरीकों से ठीक किया जा सकता है:

  • minSdkVersion को 24 पर सेट करें.
  • Player Settings > Android > Publishing Settings > Minify में जाकर, Android minification को चालू करें
  • settingsTemplate.gradle फ़ाइल में यह जोड़कर, डेक्स टूल का कोई दूसरा वर्शन तय करें:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

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

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

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

  • Cocoapods के वर्शन को 1.10.2 पर डाउनग्रेड करें. यह समस्या, सिर्फ़ वर्शन 1.11 और उससे नए वर्शन में मौजूद है.

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

Firebase Unity SDK के वर्शन को अपडेट करने का तरीका

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

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

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