ভূমিকা
Firebase SDK for Unity ব্যবহার করে Unity গেমগুলির কম্পাইল এবং বিল্ড প্রক্রিয়া ডিবাগ করার জন্য নীচে একটি নির্দেশিকা দেওয়া হল। এটি বর্ণনা করে যে নতুন প্ল্যাটফর্মের জন্য আপনার গেমটি কনফিগার এবং তৈরি করার সময় বা আপডেটের পরে আপনি যে সাধারণ সমস্যাগুলির মুখোমুখি হতে পারেন সেগুলি কীভাবে তদন্ত এবং সমাধান করবেন। প্রক্রিয়াটিতে কখন এই ত্রুটিগুলি ঘটতে পারে তার ক্রম অনুসারে এটি সাজানো হয়েছে। ক্রমানুসারে তাদের সাথে পরামর্শ করুন এবং প্রতিটি সমাধানের সাথে সাথে এগিয়ে যান।
এই ডকুমেন্টটি ছাড়াও, আরও তথ্যের জন্য Firebase for Unity FAQ দেখুন।
প্লে মোড সংকলনের সমস্যা
মোবাইল বিল্ড শুরু করার আগে এডিটরে পরীক্ষা করার সময় প্রথম শ্রেণীর বিল্ড সমস্যা দেখা দিতে পারে। এই বিভাগটি প্লে মোডের আগে এবং চলাকালীন ঘটে যাওয়া সমস্ত ফায়ারবেস ত্রুটি সম্পর্কে আলোচনা করে।
যখন ইউনিটি শুরু করে অথবা নির্ভরতা, কোড বা অন্যান্য সম্পদের পরিবর্তন সনাক্ত করে, তখন এটি প্রকল্পটি পুনর্নির্মাণের চেষ্টা করবে। যদি সেই সময়ে প্রকল্পটি কম্পাইল করতে অক্ষম হয়, তাহলে সম্পাদক কনসোলে কম্পাইলেশন ত্রুটিগুলি লগ করবে এবং আপনি যদি প্লে মোডে প্রবেশ করার চেষ্টা করেন, তাহলে আপনি ইউনিটির দৃশ্য ট্যাবে একটি ত্রুটি পপআপ পাবেন যেখানে লেখা থাকবে যে All compiler errors have to be fixed before you can enter playmode!
ফায়ারবেস-সম্পর্কিত সংকলন সমস্যাগুলি ডিবাগ করা হচ্ছে
অনুপস্থিত প্রকার, শ্রেণী, পদ্ধতি এবং সদস্য
অনেক Firebase সমস্যা দেখা দেয় কারণ সম্পাদক এবং কম্পাইলার প্রয়োজনীয় প্রকার, ক্লাস, পদ্ধতি এবং সদস্য খুঁজে পেতে অক্ষম। এর সাধারণ লক্ষণগুলি হল নিম্নলিখিত রূপগুলি:
The type or namespace name '<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace 'Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
'<CLASS NAME>' does not contain a definition for '<MEMBER VARIABLE OR METHOD NAME>'
রেজোলিউশনের ধাপ:
যেখানে আপনি Firebase ক্লাস বা কোডে পদ্ধতি ব্যবহার করছেন, সেখানে নিশ্চিত করুন যে আপনি প্রয়োজনীয় Firebase পণ্যগুলির জন্য সঠিক
usingনির্দেশিকা রেখে সেগুলি উপলব্ধ করছেন।যাচাই করুন যে আপনি উপযুক্ত Firebase প্যাকেজগুলি আমদানি করেছেন:
- উপযুক্ত প্যাকেজগুলি আমদানি করতে:
-
.unitypackages হিসেবে Firebase Unity SDK যোগ করুন অথবা - অতিরিক্ত ইউনিটি ইনস্টলেশন বিকল্পগুলিতে বিকল্পগুলির মধ্যে একটি দেখুন এবং সম্পাদন করুন।
-
- নিশ্চিত করুন যে আপনার প্রকল্পের প্রতিটি Firebase পণ্য এবং EDM4U :
- একই সংস্করণে আছে
-
.unitypackageগুলি একচেটিয়াভাবে অথবা একচেটিয়াভাবে ইউনিটি প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা হয়েছিল।
- উপযুক্ত প্যাকেজগুলি আমদানি করতে:
যদি আপনি "10.0.0" সংস্করণের আগে Firebase Unity SDK
.unitypackageহিসাবে আমদানি করে থাকেন, তাহলে Firebase Unity SDK জিপ আর্কাইভে .NET 3.x এবং .NET 4.x উভয় সমর্থনের জন্য প্যাকেজ রয়েছে। নিশ্চিত করুন যে আপনি আপনার প্রকল্পে শুধুমাত্র সামঞ্জস্যপূর্ণ .NET ফ্রেমওয়ার্ক স্তর অন্তর্ভুক্ত করেছেন:- ইউনিটি এডিটর এবং .NET ফ্রেমওয়ার্ক লেভেলের সংস্করণগুলির মধ্যে সামঞ্জস্যতা আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করুন বিভাগে আলোচনা করা হয়েছে।
- যদি আপনি ভুল করে ভুল .NET ফ্রেমওয়ার্ক লেভেলে আপনার Firebase প্যাকেজগুলি আমদানি করে থাকেন অথবা
.unitypackageব্যবহার থেকে অতিরিক্ত ইউনিটি ইনস্টলেশন বিকল্পগুলির একটিতে স্যুইচ করার প্রয়োজন হয়, তাহলে সবচেয়ে পরিষ্কার উপায় হল এই মাইগ্রেশন বিভাগে উল্লিখিত পদ্ধতিগুলির মাধ্যমে প্রতিটি Firebase প্যাকেজ অপসারণ করা এবং তারপরে সমস্ত Firebase প্যাকেজ পুনরায় আমদানি করা।
আপনার সম্পাদক আপনার প্রকল্পটি পুনর্নির্মাণ করছেন কিনা এবং আপনার চালানোর প্রচেষ্টাগুলি আপনার প্রকল্পের সবচেয়ে বর্তমান অবস্থা প্রতিফলিত করে কিনা তা পরীক্ষা করুন:
- ডিফল্টরূপে, যখনই সম্পদ বা কনফিগারেশন পরিবর্তন সনাক্ত করা হয় তখনই ইউনিটি এডিটর পুনর্নির্মাণের জন্য সেট করা থাকে।
- এটা সম্ভব যে এই কার্যকারিতাটি নিষ্ক্রিয় করা হয়েছে এবং ইউনিটি এডিটরটি ম্যানুয়াল রিফ্রেশ/পুনঃকম্পাইল এ সেট করা আছে। এটি তদন্ত করুন এবং যদি এটি হয় তবে ম্যানুয়াল রিফ্রেশ চেষ্টা করুন।
প্লে মোড রানটাইম ত্রুটি
যদি আপনার গেমটি শুরু হয়, কিন্তু চালানোর সময় Firebase-এর সাথে সমস্যা দেখা দেয়, তাহলে নিম্নলিখিতগুলি চেষ্টা করে দেখুন:
নিশ্চিত করুন যে আপনি Mac OS-এ "নিরাপত্তা ও গোপনীয়তা" বিভাগে Firebase বান্ডেল অনুমোদন করেছেন।
যদি, Mac OS-এর এডিটরে আপনার গেমটি শুরু করার সময়, আপনাকে একটি সংলাপ দেখানো হয় যেখানে লেখা থাকে, "FirebaseCppApp-<version>.bundle খোলা যাবে না কারণ ডেভেলপার যাচাই করা যাচ্ছে না।", তাহলে আপনাকে Mac-এর নিরাপত্তা ও গোপনীয়তা মেনুতে সেই নির্দিষ্ট বান্ডেল ফাইলটি অনুমোদন করতে হবে।
এটি করতে, অ্যাপল আইকন > সিস্টেম পছন্দ > নিরাপত্তা ও গোপনীয়তা ক্লিক করুন।
পৃষ্ঠার প্রায় অর্ধেক নিচে, নিরাপত্তা মেনুতে, একটি অংশ আছে যেখানে লেখা আছে ""FirebaseCppApp-<version>.bundle" ব্যবহার থেকে ব্লক করা হয়েছে কারণ এটি কোনও চিহ্নিত ডেভেলপারের নয়।"
"যাইহোক অনুমতি দিন" লেবেলযুক্ত বোতামটি ক্লিক করুন।

ইউনিটিতে ফিরে যান এবং আবার প্লে টিপুন।
এরপর আপনি প্রথমটির মতো একটি সতর্কতা দেখতে পাবেন:

"ওপেন" টিপুন এবং আপনার প্রোগ্রামটি এগিয়ে যেতে সক্ষম হবে; আপনাকে এই নির্দিষ্ট ফাইলটি সম্পর্কে আর জিজ্ঞাসা করা হবে না।
নিশ্চিত করুন যে আপনার প্রকল্পে বৈধ কনফিগারেশন ফাইল রয়েছে এবং ব্যবহার করা হচ্ছে।
- নিশ্চিত করুন যে আপনার বিল্ড সেটিংস আপনার লক্ষ্যের জন্য (iOS বা Android) File > Build Settings এ সেট করা আছে। আরও সম্পূর্ণ আলোচনার জন্য, Unity Build Settings Documentation পড়ুন।
- আপনার অ্যাপের কনফিগ ফাইলটি ডাউনলোড করুন (অ্যান্ড্রয়েডের জন্য
google-services.jsonঅথবা iOS এর জন্যGoogleService-Info.plist) এবং Project Settings > Your Apps থেকে Firebase কনসোল থেকে টার্গেট তৈরি করুন: যদি আপনার কাছে ইতিমধ্যেই এই ফাইলগুলি থাকে, তাহলে আপনার প্রোজেক্ট থেকে সেগুলি মুছে ফেলুন এবং সাম্প্রতিক সংস্করণ দিয়ে প্রতিস্থাপন করুন, নিশ্চিত করুন যে সেগুলি উপরে প্রদর্শিত "(1)" বা ফাইলের নামের সাথে সংযুক্ত অন্যান্য সংখ্যা ছাড়াই ঠিক যেমন বানান করা হয়েছে। - যদি কনসোলে
Assets/StreamingAssets/ফাইল সম্পর্কিত কোনও বার্তা থাকে, তাহলে নিশ্চিত করুন যে কোনও কনসোল বার্তা নেই যেখানে বলা হয়েছে যে ইউনিটি সেখানে ফাইল সম্পাদনা করতে অক্ষম। - নিশ্চিত করুন যে
Assets/StreamingAssets/google-services-desktop.jsonতৈরি হয়েছে এবং ডাউনলোড করা কনফিগারেশন ফাইলের সাথে মেলে।- যদি এটি স্বয়ংক্রিয়ভাবে তৈরি না হয় এবং
StreamingAssets/বিদ্যমান না থাকে, তাহলেAssetsডিরেক্টরিতে ম্যানুয়ালি ডিরেক্টরিটি তৈরি করুন। - ইউনিটি এখন
google-services-desktop.jsonতৈরি করেছে কিনা তা পরীক্ষা করুন।
- যদি এটি স্বয়ংক্রিয়ভাবে তৈরি না হয় এবং
নিশ্চিত করুন যে প্রতিটি Firebase পণ্য এবং EDM4U শুধুমাত্র .unitypackage অথবা Unity Package Manager এর মাধ্যমে ইনস্টল করা হয়েছে।
- Firebase SDK এবং EDM4U এক বা অন্য পদ্ধতিতে ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করতে
Assets/ফোল্ডার এবং Unity Package Manager উভয়ই পরীক্ষা করুন। - কিছু গুগল-ডেভেলপড প্লাগইন , যেমন গুগল প্লে, এবং থার্ড-পার্টি প্লাগইন EDM4U-এর উপর নির্ভর করতে পারে। এই প্লাগইনগুলি তাদের
.unitypackageবা ইউনিটি প্যাকেজ ম্যানেজার (UPM) প্যাকেজগুলিতে EDM4U অন্তর্ভুক্ত করতে পারে। নিশ্চিত করুন যে আপনার প্রকল্পে EDM4U-এর শুধুমাত্র একটি কপি আছে। যদি কোনও UPM প্যাকেজ EDM4U-এর উপর নির্ভর করে, তাহলে শুধুমাত্র EDM4U-এর UPM সংস্করণগুলি রাখাই ভালো, যা Google APIs for Unity Archive পৃষ্ঠায় পাওয়া যাবে।
আপনার প্রকল্পের প্রতিটি Firebase পণ্য একই সংস্করণে আছে কিনা তা নিশ্চিত করুন।
- যদি Firebase SDK গুলি
.unitypackageএর মাধ্যমে ইনস্টল করা হয়ে থাকে, তাহলেAssets/Firebase/Plugins/x86_64/অধীনে থাকা সমস্তFirebaseCppAppলাইব্রেরি একই সংস্করণে আছে কিনা তা পরীক্ষা করুন। - যদি Firebase SDK গুলি Unity Package Manager (UPM) এর মাধ্যমে ইনস্টল করা হয়ে থাকে, তাহলে Windows > Package Manager খুলুন, "Firebase" অনুসন্ধান করুন এবং নিশ্চিত করুন যে সমস্ত Firebase প্যাকেজ একই সংস্করণে আছে।
- যদি আপনার প্রোজেক্টে Firebase SDK-এর বিভিন্ন সংস্করণ থাকে, তাহলে আমরা সুপারিশ করছি যে আপনি সমস্ত Firebase SDK-কে পুনরায় ইনস্টল করার আগে সম্পূর্ণরূপে সমস্ত Firebase SDK-কে সরিয়ে ফেলুন, এবার একই সংস্করণ দিয়ে। সবচেয়ে পরিষ্কার উপায় হল এই মাইগ্রেশন বিভাগে উল্লিখিত পদ্ধতিগুলির মাধ্যমে প্রতিটি Firebase প্যাকেজ অপসারণ করা।
সমাধানকারী এবং লক্ষ্য ডিভাইস বিল্ড ত্রুটি
যদি আপনার গেমটি এডিটরে কাজ করে (আপনার পছন্দের উপযুক্ত বিল্ড টার্গেটের জন্য কনফিগার করা), তাহলে যাচাই করুন যে ইউনিটির জন্য বহিরাগত নির্ভরতা ব্যবস্থাপক (EDM4U) সঠিকভাবে কনফিগার করা এবং কাজ করছে।
EDM4U GitHub সংগ্রহস্থলে প্রক্রিয়াটির এই অংশের জন্য একটি ধাপে ধাপে নির্দেশিকা রয়েছে যা আপনার পর্যালোচনা করা উচিত এবং এগিয়ে যাওয়ার আগে অনুসরণ করা উচিত।
'সিঙ্গেল ডেক্স' সমস্যা এবং মিনিফিকেশন (ক্লাউড ফায়ারস্টোর ব্যবহার করলে বাধ্যতামূলক )
একটি অ্যান্ড্রয়েড অ্যাপ তৈরি করার সময়, আপনি একটি একক ডেক্স ফাইল থাকার কারণে বিল্ড ব্যর্থতার সম্মুখীন হতে পারেন। ত্রুটি বার্তাটি নিম্নলিখিতগুলির মতো দেখাবে (যদি আপনার প্রকল্পটি গ্র্যাডেল বিল্ড সিস্টেম ব্যবহারের জন্য কনফিগার করা থাকে):
Cannot fit requested classes in a single dex file.
.dex ফাইলগুলি অ্যান্ড্রয়েড অ্যাপ্লিকেশনের জন্য ক্লাস সংজ্ঞা এবং তাদের সাথে সম্পর্কিত অ্যাডজাঙ্কট ডেটার একটি সেট ধরে রাখতে ব্যবহৃত হয়। একটি একক ডেক্স ফাইল 65,536টি পদ্ধতির রেফারেন্সের মধ্যে সীমাবদ্ধ; আপনার প্রকল্পের সমস্ত অ্যান্ড্রয়েড লাইব্রেরি থেকে মোট পদ্ধতির সংখ্যা এই সীমা অতিক্রম করলে বিল্ডগুলি ব্যর্থ হবে।
নিম্নলিখিত দুটি ধাপ ক্রমানুসারে প্রয়োগ করা যেতে পারে; যদি মিনিফিকেশন সমস্যার সমাধান না করে তবেই কেবল মাল্টিডেক্স সক্ষম করুন।
মিনিফিকেশন সক্ষম করুন
ইউনিটি ২০১৭.২ সালে অব্যবহৃত কোড বাদ দেওয়ার জন্য মিনিফিকেশন চালু করে, যা একটি একক ডেক্স ফাইলে রেফারেন্স করা পদ্ধতির মোট সংখ্যা কমাতে পারে। * বিকল্পটি প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > প্রকাশনা সেটিংস > মিনিফাইতে পাওয়া যাবে। * ইউনিটির বিভিন্ন সংস্করণে বিকল্পগুলি ভিন্ন হতে পারে তাই অফিসিয়াল ইউনিটি ডকুমেন্টেশন দেখুন।
মাল্টিডেক্স সক্ষম করুন
যদি, মিনিফিকেশন সক্ষম করার পরেও, রেফারেন্স করা পদ্ধতির সংখ্যা সীমা অতিক্রম করে, তাহলে আরেকটি বিকল্প হল multidex সক্ষম করা। ইউনিটিতে এটি অর্জনের একাধিক উপায় রয়েছে:
- যদি প্লেয়ার সেটিংসের অধীনে কাস্টম গ্রেডল টেমপ্লেট সক্রিয় থাকে,
mainTemplate.gradleপরিবর্তন করুন। - যদি আপনি এক্সপোর্ট করা প্রজেক্ট তৈরি করতে অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন, তাহলে মডিউল-লেভেল build.gradle ফাইলটি পরিবর্তন করুন।
আরও বিস্তারিত তথ্য মাল্টিডেক্স ব্যবহারকারী নির্দেশিকায় পাওয়া যাবে।
টার্গেট ডিভাইস রানটাইম ত্রুটিগুলি বোঝা এবং ঠিক করা
যদি আপনার গেমটি এডিটরে কাজ করে এবং আপনার টার্গেট ডিভাইসের জন্য তৈরি এবং ইনস্টল করা যায়, কিন্তু রানটাইম ত্রুটির সম্মুখীন হন, তাহলে ডিভাইসে তৈরি লগগুলি পরিদর্শন এবং তদন্ত করুন ।
এই বিভাগটি আপনার লগগুলিতে সম্ভাব্য ত্রুটি এবং ডিভাইস বা সিমুলেটরের রানটাইমের সময় ঘটে এমন একটি ত্রুটির জন্য কীভাবে তদন্ত করবেন তা বিশদভাবে বর্ণনা করে।
অ্যান্ড্রয়েড
সিমুলেটর
- আপনার এমুলেটরের কনসোলে প্রদর্শিত লগগুলি পরীক্ষা করুন অথবা লগক্যাট উইন্ডোটি দেখুন।
যন্ত্র
adb এবং adb logcat এর সাথে পরিচিত হোন এবং কীভাবে সেগুলি ব্যবহার করবেন।
- আউটপুট ফিল্টার করার জন্য আপনি আপনার কমান্ড লাইন এনভায়রনমেন্টের বিভিন্ন টুল ব্যবহার করতে পারেন, তবে বিকল্পভাবে logcat এর বিকল্পগুলি দেখার কথা বিবেচনা করুন।
পরিষ্কার স্লেট দিয়ে ADB সেশন শুরু করার একটি সহজ উপায় হল:
adb logcat -c && adb logcat <OPTIONS>যেখানে
OPTIONSহল আউটপুট ফিল্টার করার জন্য আপনি যে কমান্ড লাইনটি পাস করেন তার যেকোনো ফ্ল্যাগ।
অ্যান্ড্রয়েড স্টুডিওর মাধ্যমে লগক্যাট ব্যবহার করা
অ্যান্ড্রয়েড স্টুডিওর মাধ্যমে লগক্যাট ব্যবহার করার সময় অতিরিক্ত অনুসন্ধান সরঞ্জাম পাওয়া যায় যা উৎপাদনশীল অনুসন্ধান তৈরি করা সহজ করে তোলে।
আইওএস
লগ পরিদর্শন করা
যদি আপনি কোনও ফিজিক্যাল ডিভাইস ব্যবহার করেন, তাহলে এটি আপনার কম্পিউটারের সাথে সংযুক্ত করুন। Xcode-এ lldb পরীক্ষা করুন।
সুইফট ইস্যু
যদি আপনি swift উল্লেখ করে ত্রুটি লগ দেখতে পান, তাহলে সেগুলি সম্পর্কে External Dependency Manager for Unity বিভাগের সাথে পরামর্শ করুন।
আরও পদক্ষেপ
যদি আপনার গেমটিতে এখনও Firebase সম্পর্কিত কম্পাইল, বিল্ড বা রান সংক্রান্ত সমস্যা থাকে, তাহলে Firebase SDK for Unity সমস্যা পৃষ্ঠাটি অনুসন্ধান করুন এবং একটি নতুন সমস্যা দায়ের করার কথা বিবেচনা করুন। অতিরিক্ত বিকল্পগুলি সম্পর্কে জানতে Firebase সহায়তা পৃষ্ঠাটি দেখুন।