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

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

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

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

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

Cannot fit requested classes in a single dex file.

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

Unity ने 2017.2 में Minification की सुविधा लॉन्च की थी. यह सुविधा, Proguard या Unity के कुछ वर्शन में मौजूद अन्य टूल का इस्तेमाल करके, इस्तेमाल न किए गए कोड को हटा देती है. इससे, एक dex फ़ाइल में रेफ़रंस किए गए तरीकों की कुल संख्या कम हो सकती है. यह विकल्प, Player Settings > Android > Publishing Settings > Minify में जाकर देखा जा सकता है. 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 पर सेट करें.
  • Player Settings > Android > Publishing Settings > Minify में जाकर, Android के लिए काट-छांट की सुविधा चालू करें
  • dex टूल का कोई दूसरा वर्शन तय करने के लिए, इसे अपनी 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 पर माइग्रेट किया जा सकता है. UPM, इंपोर्ट करने का सुझाया गया तरीका है.