এই পৃষ্ঠাটি ইউনিটি-নির্দিষ্ট সমস্যাগুলির জন্য টিপস এবং সমস্যা সমাধানের প্রস্তাব দেয় যা আপনি Firebase ব্যবহার করার সময় সম্মুখীন হতে পারেন।
অন্যান্য চ্যালেঞ্জ আছে বা নীচের রূপরেখা আপনার সমস্যা দেখতে পাচ্ছেন না? আরও প্যান-ফায়ারবেস বা পণ্য-নির্দিষ্ট প্রায়শই জিজ্ঞাসিত প্রশ্নগুলির জন্য প্রধান ফায়ারবেস FAQ পরীক্ষা করে দেখুন৷
ইউনিটি 2017.x এবং পরবর্তী ব্যবহার করার সময় .NET সামঞ্জস্য
ইউনিটি 2017 এবং পরবর্তীতে একটি পরীক্ষামূলক বিল্ড বিকল্প হিসাবে Firebase .NET 4.x সমর্থন করে। ফায়ারবেস প্লাগইনগুলি .NET-এর পূর্ববর্তী সংস্করণগুলিতে কিছু .NET 4.x ক্লাস প্রদান করতে পার্স SDK- এর উপাদানগুলি ব্যবহার করে৷
অতএব, Firebase Unity SDK সংস্করণ 5.4.0
এবং পরবর্তীতে এমন প্লাগইনগুলি প্রদান করে যা Firebase Unity SDK-এর dotnet3
এবং dotnet4
ডিরেক্টরিতে .NET 3.x বা .NET 4.x-এর সাথে সামঞ্জস্যপূর্ণ।
আপনি যদি একটি Firebase প্লাগইন আমদানি করেন যা আপনার প্রকল্পে সক্ষম .NET সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়, আপনি .NET ফ্রেমওয়ার্কের কিছু প্রকার থেকে কম্পাইল ত্রুটি দেখতে পাবেন যা পার্স SDK দ্বারা প্রয়োগ করা হয়৷
সংকলন ত্রুটি সমাধান করতে, আপনি যদি .NET 3.x ব্যবহার করেন:
- সমস্ত প্ল্যাটফর্মের জন্য নিম্নলিখিত DLLগুলি সরান বা নিষ্ক্রিয় করুন:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
- সমস্ত প্ল্যাটফর্মের জন্য নিম্নলিখিত DLL সক্রিয় করুন:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
সংকলন ত্রুটি সমাধান করতে, আপনি যদি .NET 4.x ব্যবহার করেন:
- সমস্ত প্ল্যাটফর্মের জন্য নিম্নলিখিত DLLগুলি সরান বা নিষ্ক্রিয় করুন:
-
Parse/Plugins/Unity.Compat.dll
-
Parse/Plugins/Unity.Tasks.dll
-
- সমস্ত প্ল্যাটফর্মের জন্য নিম্নলিখিত DLL সক্রিয় করুন:
-
Parse/Plugins/dotNet45/Unity.Compat.dll
-
Parse/Plugins/dotNet45/Unity.Tasks.dll
-
আপনি যদি অন্য ফায়ারবেস প্লাগইন আমদানি করেন:
- আপনার ইউনিটি প্রজেক্টে, আপনার প্রোজেক্টের জন্য সঠিক ডিএলএল সক্ষম করতে অ্যাসেটস > প্লে সার্ভিসেস রিসোলভার > সংস্করণ হ্যান্ডলার > আপডেটে নেভিগেট করুন।
.NET 4.x প্রকল্পে ইউনিটি 2017.1 IL2CPP সংকলন
ইউনিটি 2017 এবং পরবর্তীতে একটি পরীক্ষামূলক বিল্ড বিকল্প হিসাবে Firebase .NET 4.x সমর্থন করে। ফায়ারবেস প্লাগইনগুলি .NET-এর পূর্ববর্তী সংস্করণগুলিতে কিছু .NET 4.x ক্লাস প্রদান করতে পার্স SDK- এর উপাদানগুলি ব্যবহার করে৷
তাই, Firebase Unity SDK সংস্করণ 5.4.0 এবং পরবর্তীতে টাইপ ফরওয়ার্ডিং DLL প্রদান করে যা পার্সের ধরনগুলিকে (উদাহরণস্বরূপ, System.Threading.Tasks.Task
এর পার্স বাস্তবায়ন) .NET কাঠামোতে ফরওয়ার্ড করে। দুর্ভাগ্যবশত, IL2CPP (একটি ট্রান্সপাইলার যা C# তে C++ রূপান্তরিত করে) যা ইউনিটি 2017.1.x এ পাঠানো হয়েছে তা সঠিকভাবে টাইপ ফরওয়ার্ডিং DLL প্রক্রিয়া করে না যার ফলে বিল্ডে ত্রুটি দেখা দেয় যা নিম্নলিখিতগুলির অনুরূপ:
Fatal error in Unity CIL Linker Mono.Cecil.ResolutionException: Failed to
resolve System.Threading.Tasks.TaskCompletionSource`1<T>
ইউনিটি 2017.1-এ .NET 4.x IL2CPP বিল্ড ত্রুটিগুলির জন্য বর্তমানে কোনও সমাধান উপলব্ধ নেই, তাই IL2CPP-এর সাথে সংকলিত প্রকল্পগুলিতে .NET 4.x ব্যবহার করতে আপনাকে অবশ্যই ইউনিটি 2017.2 বা তার পরে আপগ্রেড করতে হবে৷
ইউনিটি 2017.2 নেটওয়ার্কিং
Firebase Realtime Database .NET নেটওয়ার্কিং স্ট্যাক ব্যবহার করে TLS নেটওয়ার্ক সংযোগ তৈরি করে। .NET 4.6 ব্যবহার করার সময় ইউনিটি 2017.2-এ TLS কার্যকারিতা ভেঙে যায় যার ফলে Realtime Database প্লাগইন সম্পাদক এবং ডেস্কটপে ব্যর্থ হয়।
এই সমস্যার জন্য কোন সমাধান নেই, তাই আপনাকে ইউনিটির একটি ভিন্ন সংস্করণ ব্যবহার করতে হবে, উদাহরণস্বরূপ সংস্করণ 2017.1 বা 2017.3।
Unity 2020-এ Firebase Android কনফিগার ফাইল নেই
গ্রেডল বিল্ড কাস্টমাইজ করার ক্ষমতা নেই এমন ইউনিটির সংস্করণগুলিকে সমর্থন করার জন্য, ফায়ারবেস এডিটর টুলটি Assets/Plugins/Android/Firebase/res/values/google-services.xml
তৈরি করে একটি Android রিসোর্স হিসেবে Android বিল্ড, যাতে Firebase SDK ডিফল্ট FirebaseApp ইনস্ট্যান্স শুরু করতে এটি ব্যবহার করতে পারে।
Unity 2020-এ, সমস্ত Android রিসোর্স অবশ্যই .androidlib
প্রত্যয় সহ ডিরেক্টরিতে থাকতে হবে। আপনার প্রোজেক্ট যদি একটি Firebase SDK ব্যবহার করে যা একটি Assets/Plugins/Android/Firebase
ডিরেক্টরি তৈরি করে, তাহলে এটির নাম পরিবর্তন করে Assets/Plugins/Android/Firebase.androidlib
করুন। নিশ্চিত করুন যে এতে AndroidManifest.xml
, project.properties
এবং res/values/google-services.xml
রয়েছে।
অ্যান্ড্রয়েড অ্যাপ তৈরি করার সময় একক ডেক্সের সমস্যা
অ্যান্ড্রয়েড অ্যাপ তৈরি করার সময়, আপনি একটি একক ডেক্স ফাইল থাকার সাথে সম্পর্কিত একটি বিল্ড ব্যর্থতার সম্মুখীন হতে পারেন। ত্রুটি বার্তাটি নীচের মত দেখায়, যদি আপনার প্রকল্পটি 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
ফাইলটি পরিবর্তন করুন।
মাল্টিডেক্স ব্যবহারকারী গাইডে আরও বিশদ পাওয়া যাবে।
ইউনিটি 2017 এবং ইউনিটি 2018 (ফায়ারবেস ইউনিটি SDK 8.0.0 এবং উচ্চতর) এ Android বিল্ডের জন্য Java 8 সমর্থন এবং ডিসুগারিং
2021 সালের মে মাসে (Firebase BoM v28.0.0), Firebase তার সমস্ত অ্যান্ড্রয়েড লাইব্রেরির জন্য ডিসুগারিং অক্ষম করে ( রিলিজ নোট দেখুন)। Firebase Unity SDK (8.0.0 এবং উচ্চতর) দিয়ে একটি Android অ্যাপ তৈরি করার সময়, আপনি নিম্নলিখিত বিল্ড ত্রুটি দেখতে পেতে পারেন:
> Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
এই পরিবর্তনটি শুধুমাত্র Unity 2017 এবং Unity 2018-এ Android বিল্ডকে প্রভাবিত করে। ইউনিটির নতুন সংস্করণগুলি গ্রেডল বিল্ড ফাইলগুলিতে ডিফল্টরূপে compileOptions
ব্লক যুক্ত করে। ইউনিটি 2017 এবং ইউনিটি 2018-এ এই বিল্ড ত্রুটিটি ঠিক করতে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
আপনার গ্রেডেল টেমপ্লেটে একটি
compileOptions
ব্লক যোগ করুন:- বিল্ড সিস্টেম হিসাবে
Gradle
ব্যবহার করুন। -
Player Settings
অধীনেCustom Gradle Template
সক্ষম করুন৷ mainTemplate.gradle
(বা মডিউল লেভেলbuild.gradle
যদি অ্যান্ড্রয়েড স্টুডিওর জন্য একটি প্রকল্প রপ্তানি করা হয়) এ নিম্নলিখিত লাইনগুলি যোগ করুন:android { compileOptions { sourceCompatibility 1.8 targetCompatibility 1.8 } }
- বিল্ড সিস্টেম হিসাবে
বিকল্পভাবে, আপনার Android প্রকল্পের জন্য minSdkVersion বাড়িয়ে 26 বা তার বেশি করুন।
এছাড়াও দেখুন অ্যান্ড্রয়েড সমস্যা সমাধান - ডিসুগারিং বিল্ড ব্যর্থতা ।
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+ এ উপলব্ধ)
- UPM-এ প্যাকেজ ব্যবস্থাপনা স্থানান্তর করতে Firebase-প্রদত্ত নির্দেশাবলী অনুসরণ করুন।
- যদিও এই পদ্ধতির জন্য
.unitypackage
ওয়ার্কফ্লো ব্যবহার করা চালিয়ে যাওয়ার চেয়ে আরও প্রাথমিক সেটআপের প্রয়োজন, এটি পরবর্তী SDK সংস্করণ আপডেটের সহজে পরিশোধ করে।
বিকল্প 2 :
.unitypackage
ফাইলগুলিকেAssets/
ডিরেক্টরিতে আমদানি করতে ব্যবহার করা চালিয়ে যানআপডেট করা সংস্করণের জন্য প্রতিটি প্যাকেজ আমদানি করুন।
আপনি Firebase ওয়েবসাইট থেকে firebase_unity_sdk.zip ডাউনলোড করলে, নিশ্চিত করুন যে আপনি সঠিক
dotnet
ফোল্ডার থেকে সমস্ত.unitypackages
আমদানি করেছেন।- আপনি যদি ইউনিটি 2019 বা তার পরে ব্যবহার করেন,
dotnet4
ফোল্ডার থেকে আমদানি করুন। - অন্যথায়, প্লেয়ার সেটিংসে স্ক্রিপ্টিং রানটাইম সংস্করণ নির্বাচন করুন এবং যদি এটি ".NET 3.x" তে সেট করা থাকে,
dotnet3
ফোল্ডার থেকে আমদানি করুন৷
- আপনি যদি ইউনিটি 2019 বা তার পরে ব্যবহার করেন,
পূর্বে আমদানি করা প্যাকেজ সংস্করণগুলির ওভাররাইটিং স্বয়ংক্রিয়ভাবে এক্সটার্নাল ডিপেন্ডেন্সি ম্যানেজার দ্বারা পরিচালনা করা উচিত (যা আপনি Firebase
.unitypackages
আমদানি করলে স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত হয়)।যাইহোক, যদি এবং শুধুমাত্র যদি এই স্বয়ংক্রিয় প্রক্রিয়া ব্যর্থ হয়, তাহলে আপনাকে ম্যানুয়ালি নিম্নলিখিত ফোল্ডারগুলি মুছে ফেলতে হবে এবং তারপরে উপরের আমদানি পদক্ষেপটি আবার চেষ্টা করুন৷
-
Assets/Editor Default Resources/Firebase
-
Assets/ExternalDependencyManager
-
Assets/Firebase
-
Assets/Parse
-
Assets/Plugins/iOS/Firebase
-
Firebase প্যাকেজগুলি UPM দ্বারা পরিচালিত হলে, .tgz
হিসাবে নতুন SDK সংস্করণ আমদানি করুন । এই আমদানি স্বয়ংক্রিয়ভাবে পূর্ববর্তী সংস্করণ ওভাররাইট করবে।