Unity ও Firebase-এর জন্য সমস্যার সমাধান ও প্রায়শই জিজ্ঞাসিত প্রশ্ন

Firebase ব্যবহার করার সময় Unity-নির্দিষ্ট সমস্যা হলে, এই পৃষ্ঠা থেকে পরামর্শ ও সমস্যার সমাধান পেতে পারেন।

অন্য কোনও সমস্যা আছে অথবা নিচে উল্লেখ করা সমস্যার মধ্যে আপনার সমস্যাটি দেখতে পাচ্ছেন না? আরও Firebase-ব্যাপী বা প্রোডাক্ট-নির্দিষ্ট প্রায়শই জিজ্ঞাসিত প্রশ্নাবলীর জন্য Firebase-এর মূল প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী চেক করে দেখতে ভুলবেন না।

Android অ্যাপ তৈরি করার সময় একটি dex সংক্রান্ত সমস্যা

Android অ্যাপ তৈরি করার সময়, একটি dex ফাইল থাকার কারণে আপনি বিল্ড সংক্রান্ত সমস্যার সম্মুখীন হতে পারেন। আপনার প্রজেক্ট Gradle বিল্ড সিস্টেম ব্যবহার করার জন্য কনফিগার করা থাকলে, সমস্যা মেসেজটি নিম্নলিখিত মেসেজের মতো দেখতে হবে।

Cannot fit requested classes in a single dex file.

Dalvik Executable (.dex) ফাইলগুলি Android অ্যাপ্লিকেশন (.apk)-এর জন্য ক্লাস ডেফিনিশন ও তার সাথে সম্পর্কিত অ্যাডজাঙ্ক্ট ডেটার একটি সেট হোল্ড করতে ব্যবহার করা হয়। একটি dex ফাইল ৬৫,৫৩৬টি পদ্ধতির রেফারেন্সের মধ্যে সীমাবদ্ধ। আপনার প্রোজেক্টের সব 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-এর মান ২৪ হিসেবে সেট করুন।
  • 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/ ডাইরেক্টরি আরও পরিষ্কার রাখতে এই পদ্ধতি ব্যবহার করুন।

আপনার Unity প্রজেক্টে, সব Firebase প্যাকেজ ম্যানেজ করার জন্য আপনাকে শুধুমাত্র একটি ইমপোর্ট পদ্ধতি ব্যবহার করতে হবে। নিচে দেওয়া নির্দেশাবলী শুধু স্বতন্ত্র প্যাকেজের ভার্সন আপডেট করার জন্য নয়, প্রয়োজন হলে প্যাকেজ ম্যানেজমেন্টকে UPM-এ (সাজেস্ট করা ইমপোর্ট পদ্ধতি) মাইগ্রেট করার জন্যও ব্যবহার করা যেতে পারে।