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

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

অন্যান্য চ্যালেঞ্জ আছে বা নীচের রূপরেখা আপনার সমস্যা দেখতে পাচ্ছেন না? আরও প্যান-ফায়ারবেস বা পণ্য-নির্দিষ্ট প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির জন্য প্রধান ফায়ারবেস FAQ পরীক্ষা করে দেখুন৷

অ্যান্ড্রয়েড অ্যাপ তৈরি করার সময় একক ডেক্সের সমস্যা

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

Cannot fit requested classes in a single dex file.

ডালভিক এক্সিকিউটেবল ( .dex ) ফাইলগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলির ( .apk ) জন্য ক্লাসের সংজ্ঞা এবং তাদের সাথে যুক্ত সংযুক্ত ডেটা রাখার জন্য ব্যবহৃত হয়। একটি একক ডেক্স ফাইল 65,536 পদ্ধতির রেফারেন্সে সীমাবদ্ধ। আপনার প্রোজেক্টের সমস্ত অ্যান্ড্রয়েড লাইব্রেরি থেকে মোট পদ্ধতির সংখ্যা এই সীমা ছাড়িয়ে গেলে বিল্ডটি ব্যর্থ হবে৷

ইউনিটি 2017.2 সালে মিনিফিকেশন চালু করেছে, যা অব্যবহৃত কোড বের করে দেওয়ার জন্য প্রোগার্ড (বা ইউনিটির কিছু সংস্করণে অন্যান্য সরঞ্জাম) ব্যবহার করে, যা একটি একক ডেক্স ফাইলে উল্লেখিত পদ্ধতির মোট সংখ্যা কমাতে পারে। প্লেয়ার সেটিংস > Android > প্রকাশনা সেটিংস > Minify- এ বিকল্পটি পাওয়া যাবে। ইউনিটির বিভিন্ন সংস্করণে বিকল্পগুলি আলাদা হতে পারে তাই অফিসিয়াল ইউনিটি ডকুমেন্টেশন দেখুন।

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

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

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

minSdkVersion 23 দিয়ে Android এর জন্য তৈরি করার সময় সমস্যা

অ্যান্ড্রয়েডের জন্য তৈরি করার সময়, আপনি যদি minSdkVersion 23 টার্গেট করেন তবে এটি ডেক্সিং ধাপে ব্যর্থ হতে পারে, সাধারণত Gradle টাস্ক ':launcher:mergeExtDexDebug'-এ, যেখানে এটি Android লাইব্রেরিগুলির একটিকে "রূপান্তর করতে ব্যর্থ হয়েছে" বলে৷ এটি অ্যান্ড্রয়েড SDK-এর ডিফল্ট ডেক্স টুলে একটি বাগ থাকার কারণে হয়েছে যা বেশিরভাগ ইউনিটি এডিটর ব্যবহার করে এবং কয়েকটি ভিন্ন উপায়ে ঠিক করা যেতে পারে:

  • minSdkVersion 24 এ সেট করুন।
  • Player Settings > Android > Publishing Settings > Minify- এ Android minification চালু করুন
  • আপনার 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 এর জন্য তৈরি করার সময়, ভাষা লোকেল বা UTF-8 এনকোডিং সম্পর্কে একটি ত্রুটির সাথে Cocoapod ইনস্টলেশন ব্যর্থ হতে পারে। বর্তমানে সমস্যাটির চারপাশে কাজ করার বিভিন্ন উপায় রয়েছে।

  • টার্মিনাল থেকে, সরাসরি pod install চালান, এবং ফলস্বরূপ xcworkspace ফাইলটি খুলুন।

  • Cocoapods-এর সংস্করণ 1.10.2-এ ডাউনগ্রেড করুন। সমস্যাটি শুধুমাত্র 1.11 এবং নতুন সংস্করণে বিদ্যমান।

  • আপনার ~/.bash_profile বা সমতুল্য, export LANG=en_US.UTF-8

Firebase Unity SDK-এর সংস্করণ কীভাবে আপডেট করবেন

ফায়ারবেস ইউনিটি SDK-এর সংস্করণগুলি আপডেট করার প্রক্রিয়া প্রাথমিকভাবে কীভাবে আমদানি করা হয়েছিল তার উপর নির্ভর করে। এখানে দুটি বিকল্প আমদানি পদ্ধতি রয়েছে:

  • আপনার প্রকল্পের Assets/ ডিরেক্টরির অধীনে .unitypackage ফাইল আমদানি করা হচ্ছে
  • ইউনিটি প্যাকেজ ম্যানেজার (UPM) ব্যবহার করে আমদানি করা হচ্ছে
    • ইউনিটি 2018.4+ এ প্যাকেজগুলি পরিচালনা করার জন্য এটি প্রস্তাবিত উপায়।
    • ভবিষ্যৎ সংস্করণ আপডেট সহজতর করতে এবং আপনার Assets/ ডিরেক্টরি ক্লিনার করতে এই পদ্ধতিটি ব্যবহার করুন।

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

যদি Firebase প্যাকেজগুলি Assets/ ডিরেক্টরিতে থাকে, তাহলে আপনার কাছে SDK সংস্করণ আপডেট করার জন্য দুটি বিকল্প রয়েছে:

  • বিকল্প 1 (প্রস্তাবিত) : UPM ব্যবহার করতে মাইগ্রেট করুন (ইউনিটি 2018.4+ এ উপলব্ধ)

  • বিকল্প 2 : .unitypackage ফাইলগুলিকে Assets/ ডিরেক্টরিতে আমদানি করতে ব্যবহার করা চালিয়ে যান

    1. আপডেট করা সংস্করণের জন্য প্রতিটি প্যাকেজ আমদানি করুন।

      আপনি Firebase ওয়েবসাইট থেকে firebase_unity_sdk.zip ডাউনলোড করলে, নিশ্চিত করুন যে আপনি সঠিক dotnet ফোল্ডার থেকে সমস্ত .unitypackages আমদানি করেছেন।

      • আপনি যদি ইউনিটি 2019 বা তার পরে ব্যবহার করেন, dotnet4 ফোল্ডার থেকে আমদানি করুন।
      • অন্যথায়, প্লেয়ার সেটিংসে স্ক্রিপ্টিং রানটাইম সংস্করণ নির্বাচন করুন এবং যদি এটি ".NET 3.x" তে সেট করা থাকে, dotnet3 ফোল্ডার থেকে আমদানি করুন৷
    2. পূর্বে আমদানি করা প্যাকেজ সংস্করণগুলির ওভাররাইটিং স্বয়ংক্রিয়ভাবে এক্সটার্নাল ডিপেন্ডেন্সি ম্যানেজার দ্বারা পরিচালনা করা উচিত (যা আপনি Firebase .unitypackages আমদানি করলে স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়)।

      যাইহোক, যদি এবং শুধুমাত্র যদি এই স্বয়ংক্রিয় প্রক্রিয়া ব্যর্থ হয়, তাহলে আপনাকে ম্যানুয়ালি নিম্নলিখিত ফোল্ডারগুলি মুছে ফেলতে হবে এবং তারপরে উপরের আমদানি পদক্ষেপটি আবার চেষ্টা করুন৷

      • Assets/Editor Default Resources/Firebase
      • Assets/ExternalDependencyManager
      • Assets/Firebase
      • Assets/Parse
      • Assets/Plugins/iOS/Firebase

Firebase প্যাকেজগুলি UPM দ্বারা পরিচালিত হলে, .tgz হিসাবে নতুন SDK সংস্করণ আমদানি করুন । এই আমদানি স্বয়ংক্রিয়ভাবে পূর্ববর্তী সংস্করণ ওভাররাইট করবে।