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

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

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

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

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

Cannot fit requested classes in a single dex file.

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

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

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

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

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

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

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

  • minSdkVersion को 24 पर सेट करें.
  • प्लेयर सेटिंग > Android > पब्लिश करने की सेटिंग > छोटा करें में जाकर, Android के लिए वीडियो को छोटा करने की सुविधा चालू करें
  • अपनी settingsTemplate.gradle फ़ाइल में यह जोड़कर, dex टूल का कोई दूसरा वर्शन तय करें:
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/ डायरेक्ट्री को बेहतर बनाने के लिए, यह तरीका अपनाएं.

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