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

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

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

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

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

Cannot fit requested classes in a single dex file.

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

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

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

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

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

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

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

  • minSdkVersion 24 এ সেট করুন।
  • প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > প্রকাশনা সেটিংস > মিনিফাই- এ অ্যান্ড্রয়েড মিনিফিকেশন চালু করুন।
  • আপনার 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 যোগ করুন

ফায়ারবেস ইউনিটি SDK-এর সংস্করণ কীভাবে আপডেট করবেন

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

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

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