সমস্যা সমাধান & ইউনিটি এবং ফায়ারবেসের জন্য প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী

এই পৃষ্ঠায় ইউনিটি-সম্পর্কিত সেইসব সমস্যার সমাধান ও প্রতিকার দেওয়া হয়েছে, যেগুলোর সম্মুখীন আপনি ফায়ারবেস ব্যবহার করার সময় হতে পারেন।

আপনার কি অন্য কোনো সমস্যা হচ্ছে অথবা নিচে আপনার সমস্যার বিবরণ খুঁজে পাচ্ছেন না? আরও সার্বিক ফায়ারবেস বা পণ্য-নির্দিষ্ট প্রশ্নোত্তরের জন্য মূল ফায়ারবেস প্রশ্নোত্তর বিভাগটি দেখে নিন।

অ্যান্ড্রয়েড অ্যাপ বিল্ড করার সময় সিঙ্গেল ডেক্স নিয়ে একটি সমস্যা

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

Cannot fit requested classes in a single dex file.

ডালভিক এক্সিকিউটেবল ( .dex ) ফাইলগুলো অ্যান্ড্রয়েড অ্যাপ্লিকেশন ( .apk )-এর জন্য একগুচ্ছ ক্লাস ডেফিনিশন এবং সেগুলোর সাথে সম্পর্কিত আনুষঙ্গিক ডেটা ধারণ করতে ব্যবহৃত হয়। একটিমাত্র dex ফাইলে সর্বোচ্চ ৬৫,৫৩৬টি মেথড রেফারেন্স করা যায়। আপনার প্রোজেক্টের সমস্ত অ্যান্ড্রয়েড লাইব্রেরির মোট মেথডের সংখ্যা এই সীমা অতিক্রম করলে বিল্ড ব্যর্থ হবে।

ইউনিটি ২০১৭.২ সংস্করণে মিনিফিকেশন চালু করেছে, যা প্রোগার্ড (বা ইউনিটির কিছু সংস্করণে অন্যান্য টুল) ব্যবহার করে অব্যবহৃত কোড বাদ দেয়, যার ফলে একটিমাত্র ডেক্স ফাইলে রেফারেন্স করা মেথডের মোট সংখ্যা কমে যেতে পারে। এই অপশনটি প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > পাবলিশিং সেটিংস > মিনিফাই- এ পাওয়া যাবে। ইউনিটির বিভিন্ন সংস্করণে অপশনগুলো ভিন্ন হতে পারে, তাই অফিসিয়াল ইউনিটি ডকুমেন্টেশন দেখুন।

যদি রেফারেন্স করা মেথডের সংখ্যা এখনও সীমা অতিক্রম করে, তাহলে আরেকটি উপায় হলো multidex সক্রিয় করা। ইউনিটিতে এটি করার একাধিক উপায় রয়েছে:

  • Player Settings অধীনে Custom Gradle Template সক্রিয় করা থাকলে, mainTemplate.gradle পরিবর্তন করুন।
  • আপনি যদি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে এক্সপোর্ট করা প্রজেক্টটি বিল্ড করেন, তাহলে মডিউল-স্তরের build.gradle ফাইলটি পরিবর্তন করুন।

মাল্টিডেক্স ব্যবহারকারী নির্দেশিকাতে আরও বিস্তারিত তথ্য পাওয়া যাবে।

minSdkVersion 23 ব্যবহার করে অ্যান্ড্রয়েডের জন্য বিল্ড করার সময় সমস্যা

অ্যান্ড্রয়েডের জন্য বিল্ড করার সময়, যদি আপনি minSdkVersion 23 টার্গেট করেন, তাহলে এটি ডেক্সিং ধাপে ব্যর্থ হতে পারে। সাধারণত ':launcher:mergeExtDexDebug' গ্রেডল টাস্কটিতে এই সমস্যা দেখা দেয়, যেখানে এটি অ্যান্ড্রয়েড লাইব্রেরিগুলোর কোনো একটিকে "Failed to transform" (রূপান্তর করতে ব্যর্থ) বলে জানায়। এর কারণ হলো অ্যান্ড্রয়েড SDK-এর ডিফল্ট ডেক্স টুলে থাকা একটি বাগ, যা বেশিরভাগ ইউনিটি এডিটর ব্যবহার করে থাকে, এবং এটি কয়েকটি ভিন্ন উপায়ে সমাধান করা যেতে পারে:

  • minSdkVersion এর মান ২৪-এ সেট করুন।
  • প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > পাবলিশিং সেটিংস > মিনিফাই- এ গিয়ে অ্যান্ড্রয়েড মিনিফিকেশন চালু করুন।
  • আপনার settingsTemplate.gradle ফাইলে এটি যোগ করে dex টুলের একটি ভিন্ন সংস্করণ নির্দিষ্ট করুন:
buildscript {
  repositories {
    mavenLocal()
    maven { url 'https://maven.google.com'  }
    mavenCentral()
  }
  dependencies {
    classpath 'com.android.tools:r8:8.3.37'
  }
}

কোকোপডস দিয়ে আইওএস-এর জন্য বিল্ড করার সময় সমস্যা

iOS-এর জন্য বিল্ড করার সময়, ল্যাঙ্গুয়েজ লোকেল বা UTF-8 এনকোডিং সংক্রান্ত ত্রুটির কারণে Cocoapod ইনস্টলেশন ব্যর্থ হতে পারে। বর্তমানে এই সমস্যাটি সমাধান করার জন্য বিভিন্ন উপায় রয়েছে।

  • টার্মিনাল থেকে সরাসরি 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 ফাইলগুলো ইম্পোর্ট করা হচ্ছে
  • ইউনিটি প্যাকেজ ম্যানেজার (UPM) ব্যবহার করে ইম্পোর্ট করা
    • ইউনিটি ২০১৮.৪+ এ প্যাকেজ পরিচালনার জন্য এটিই প্রস্তাবিত পদ্ধতি।
    • ভবিষ্যৎ সংস্করণ আপডেট করা সহজ করতে এবং আপনার Assets/ ডিরেক্টরিকে আরও পরিচ্ছন্ন রাখতে এই পদ্ধতিটি ব্যবহার করুন।

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