এই পৃষ্ঠাটি 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-এর ডিফল্ট ডেক্স টুলে একটি বাগের কারণে ঘটে যা বেশিরভাগ ইউনিটি এডিটর ব্যবহার করেন এবং কয়েকটি ভিন্ন উপায়ে এটি ঠিক করা যেতে পারে:
-
minSdkVersion24 এ সেট করুন। - প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > প্রকাশনা সেটিংস > মিনিফাই- এ অ্যান্ড্রয়েড মিনিফিকেশন চালু করুন।
- আপনার
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 (প্রস্তাবিত আমদানি পদ্ধতি) এ স্থানান্তর করার জন্যও ব্যবহার করা যেতে পারে।
যদি Firebase প্যাকেজগুলি Assets/ ডিরেক্টরিতে থাকে, তাহলে SDK সংস্করণ আপডেট করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে:
বিকল্প ১ (প্রস্তাবিত) : UPM ব্যবহারে মাইগ্রেট করুন (Unity 2018.4+ এ উপলব্ধ)
- প্যাকেজ ব্যবস্থাপনা UPM-এ স্থানান্তর করতে Firebase-প্রদত্ত নির্দেশাবলী অনুসরণ করুন।
- যদিও এই পদ্ধতিতে
.unitypackageওয়ার্কফ্লো ব্যবহার চালিয়ে যাওয়ার চেয়ে আরও প্রাথমিক সেটআপের প্রয়োজন হয়, এটি পরবর্তী SDK সংস্করণ আপডেটের মাধ্যমে সহজেই লাভবান হয়।
বিকল্প ২ :
Assets/ডিরেক্টরিতে আমদানি করতে.unitypackageফাইলগুলি ব্যবহার করা চালিয়ে যান।আপডেটেড ভার্সনের জন্য প্রতিটি প্যাকেজ আমদানি করুন।
যদি আপনি Firebase ওয়েবসাইট থেকে firebase_unity_sdk.zip ডাউনলোড করেন, তাহলে নিশ্চিত করুন যে আপনি সঠিক
dotnetফোল্ডার থেকে সমস্ত.unitypackagesআমদানি করেছেন।- আপনি যদি ইউনিটি ২০১৯ বা তার পরবর্তী সংস্করণ ব্যবহার করেন, তাহলে
dotnet4ফোল্ডার থেকে আমদানি করুন। - অন্যথায়, Player Settings থেকে Scripting Runtime Version নির্বাচন করুন, এবং যদি এটি ".NET 3.x" তে সেট করা থাকে, তাহলে
dotnet3ফোল্ডার থেকে আমদানি করুন।
- আপনি যদি ইউনিটি ২০১৯ বা তার পরবর্তী সংস্করণ ব্যবহার করেন, তাহলে
পূর্বে আমদানি করা প্যাকেজ সংস্করণগুলির ওভাররাইটিং স্বয়ংক্রিয়ভাবে বহিরাগত নির্ভরতা ব্যবস্থাপক দ্বারা পরিচালিত হওয়া উচিত (যা আপনি যখন Firebase
.unitypackagesআমদানি করেন তখন স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়)।তবে, যদি এবং শুধুমাত্র যদি এই স্বয়ংক্রিয় প্রক্রিয়াটি ব্যর্থ হয়, তাহলে আপনাকে নিম্নলিখিত ফোল্ডারগুলি ম্যানুয়ালি মুছে ফেলতে হবে এবং তারপরে উপরের আমদানি ধাপটি আবার চেষ্টা করতে হবে।
-
Assets/Editor Default Resources/Firebase -
Assets/ExternalDependencyManager -
Assets/Firebase -
Assets/Parse -
Assets/Plugins/iOS/Firebase
-
যদি Firebase প্যাকেজগুলি UPM দ্বারা পরিচালিত হয়, তাহলে নতুন SDK সংস্করণটি .tgz হিসাবে আমদানি করুন । এই আমদানিটি স্বয়ংক্রিয়ভাবে পূর্ববর্তী সংস্করণটিকে ওভাররাইট করবে।