গেম বিল্ড, ইন্সটল এবং রান প্রসেস ডিবাগ করা

ভূমিকা

ইউনিটির জন্য Firebase SDK ব্যবহার করে ইউনিটি গেমগুলির জন্য কম্পাইল এবং বিল্ড প্রক্রিয়া ডিবাগ করার জন্য নিম্নলিখিত একটি নির্দেশিকা। এটি বর্ণনা করে যে কীভাবে একটি নতুন প্ল্যাটফর্মের জন্য বা আপডেটের পরে আপনার গেমটি কনফিগার এবং তৈরি করার সময় আপনি যে আরও সাধারণ সমস্যাগুলির সম্মুখীন হতে পারেন তার তদন্ত এবং সমাধান করবেন৷ প্রক্রিয়ায় কখন এই ত্রুটিগুলি ঘটতে পারে সে অনুসারে এটি সাজানো হয়েছে। ক্রমানুসারে তাদের সাথে পরামর্শ করুন এবং প্রতিটি সমাধান হয়ে গেলে এগিয়ে যান।

এই ডক ছাড়াও, আরও তথ্যের জন্য Firebase for Unity FAQ-এর সাথে পরামর্শ করুন।

প্লে মোড সংকলন সমস্যা

আপনি একটি মোবাইল বিল্ড শুরু করার চেষ্টা করার আগে সম্পাদকে পরীক্ষা করার সময় প্রথম শ্রেণীর বিল্ড সমস্যাগুলি ঘটতে পারে। এই বিভাগটি প্লে মোডের আগে এবং চলাকালীন সমস্ত ফায়ারবেস ত্রুটি সম্পর্কিত।

যখন ইউনিটি নির্ভরতা, কোড বা অন্যান্য সম্পদে পরিবর্তন শুরু করে বা সনাক্ত করে, তখন এটি প্রকল্পটি পুনর্নির্মাণের চেষ্টা করবে। যদি প্রকল্পটি সেই সময়ে কম্পাইল করতে অক্ষম হয়, তাহলে সম্পাদক কনসোলে কম্পাইলেশন ত্রুটিগুলি লগ করবে এবং আপনি যদি প্লে মোডে প্রবেশ করার চেষ্টা করেন, তাহলে আপনি ইউনিটির দৃশ্য ট্যাবে একটি ত্রুটি পপআপ পাবেন যা পড়ে All compiler errors have to be fixed before you can enter playmode! .

অনুপস্থিত প্রকার, শ্রেণী, পদ্ধতি এবং সদস্য

প্রয়োজনীয় ধরন, ক্লাস, পদ্ধতি এবং সদস্য খুঁজে পেতে সম্পাদক এবং কম্পাইলারের অক্ষমতার কারণে অনেক ফায়ারবেস সমস্যা দেখা দেয়। এর সাধারণ উপসর্গগুলি নিম্নরূপ:

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>'

সমাধান পদক্ষেপ:
  1. যেখানে আপনি Firebase ক্লাস বা কোডের পদ্ধতি ব্যবহার করছেন, নিশ্চিত করুন যে আপনি প্রয়োজনীয় নির্দিষ্ট Firebase পণ্যের জন্য সঠিক নির্দেশনা using করে সেগুলি উপলব্ধ করছেন।

    1. MechaHamster থেকে উদাহরণ: Firebase সংস্করণের সাথে লেভেল আপ :
      1. using Firebase.RemoteConfig;
      2. using Firebase.Crashlytics;
  2. আপনি উপযুক্ত Firebase প্যাকেজ আমদানি করেছেন কিনা যাচাই করুন:

    1. উপযুক্ত প্যাকেজ আমদানি করতে হয়:
      1. .unitypackage s বা হিসাবে Firebase Unity SDK যোগ করুন
      2. অতিরিক্ত ইউনিটি ইনস্টলেশন বিকল্পগুলির বিকল্পগুলির মধ্যে একটি দেখুন এবং সম্পাদন করুন৷
    2. আপনার প্রজেক্ট এবং EDM4U- এর প্রতিটি ফায়ারবেস পণ্য নিশ্চিত করুন:
      • একই সংস্করণে আছেন
      • একচেটিয়াভাবে বা ইউনিটি প্যাকেজ ম্যানেজারের মাধ্যমে একচেটিয়াভাবে .unitypackage হিসাবে ইনস্টল করা হয়েছে৷
  3. আপনি যদি .unitypackage s হিসাবে "10.0.0" সংস্করণের আগে Firebase ইউনিটি SDK আমদানি করে থাকেন, তাহলে Firebase ইউনিটি SDK জিপ সংরক্ষণাগারে .NET 3.x এবং .NET 4.x সমর্থন উভয়ের জন্য প্যাকেজ রয়েছে৷ নিশ্চিত করুন যে আপনি আপনার প্রকল্পে শুধুমাত্র সামঞ্জস্যপূর্ণ .NET ফ্রেমওয়ার্ক স্তর অন্তর্ভুক্ত করেছেন:

    1. ইউনিটি এডিটরের সংস্করণ এবং .NET ফ্রেমওয়ার্কস স্তরগুলির মধ্যে সামঞ্জস্য নিয়ে আপনার ইউনিটি প্রকল্পে Firebase যোগ করুন- এ আলোচনা করা হয়েছে।
    2. আপনি যদি ভুল .NET ফ্রেমওয়ার্ক লেভেলে আপনার ফায়ারবেস প্যাকেজগুলি ইম্পোর্ট করে থাকেন বা .unitypackage s ব্যবহার করা থেকে অতিরিক্ত ইউনিটি ইনস্টলেশন বিকল্পগুলির একটিতে স্যুইচ করতে চান, তাহলে সবচেয়ে পরিষ্কার উপায় হল এই মাইগ্রেশন বিভাগে উল্লিখিত পদ্ধতিগুলির মাধ্যমে প্রতিটি Firebase প্যাকেজ অপসারণ করা এবং তারপর আবার সমস্ত Firebase প্যাকেজ পুনরায় আমদানি করুন।
  4. আপনার সম্পাদক আপনার প্রকল্প পুনর্নির্মাণ করছেন এবং আপনার প্রজেক্টের বর্তমান অবস্থা প্রতিফলিত করার জন্য আপনার প্রচেষ্টাগুলিকে প্রতিফলিত করছে কিনা তা পরীক্ষা করুন:

    1. ডিফল্টরূপে, যখনই সম্পদ বা কনফিগারেশন পরিবর্তন শনাক্ত করা হয় তখন ইউনিটি সম্পাদক পুনর্নির্মাণের জন্য সেট করা হয়।
    2. এটা সম্ভব যে এই কার্যকারিতা নিষ্ক্রিয় করা হয়েছে এবং ইউনিটি এডিটর ম্যানুয়াল রিফ্রেশ/পুনঃকম্পাইলে সেট করা আছে। এটি তদন্ত করুন এবং যদি এটি হয় তবে একটি ম্যানুয়াল রিফ্রেশ চেষ্টা করুন।

প্লে মোড রানটাইম ত্রুটি

যদি আপনার গেমটি শুরু হয়, কিন্তু চালানোর সময় ফায়ারবেসের সাথে সমস্যা হয়, তাহলে নিম্নলিখিতগুলি চেষ্টা করুন:

নিশ্চিত করুন যে আপনি Mac OS-এ "নিরাপত্তা ও গোপনীয়তা"-এ Firebase বান্ডেল অনুমোদন করেছেন

যদি, ম্যাক ওএস-এর সম্পাদকে আপনার গেম শুরু করার সময়, আপনাকে একটি সংলাপ উপস্থাপন করা হয় যা বলে, "FirebaseCppApp-<version>. বান্ডল খোলা যাবে না কারণ বিকাশকারী যাচাই করা যাচ্ছে না।", আপনাকে অবশ্যই সেই নির্দিষ্ট বান্ডেল ফাইলটি অনুমোদন করতে হবে ম্যাকের নিরাপত্তা ও গোপনীয়তা মেনু।

এটি করতে, অ্যাপল আইকন > সিস্টেম পছন্দ > নিরাপত্তা এবং গোপনীয়তা ক্লিক করুন

নিরাপত্তা মেনুতে, পৃষ্ঠার প্রায় অর্ধেক নিচে, সেখানে একটি বিভাগ আছে যা বলে যে ""FirebaseCppApp-<version>.bundle" ব্যবহার করা থেকে ব্লক করা হয়েছে কারণ এটি কোনো চিহ্নিত ডেভেলপারের কাছ থেকে নয়।"

Allow Anyway লেবেলযুক্ত বোতামে ক্লিক করুন।

c35166e224cce720.png

ইউনিটিতে ফিরে যান এবং আবার প্লে টিপুন।

তারপরে আপনি প্রথমটির মতো একটি সতর্কতা দেখতে পাবেন:

5ad9ddb0d3a52892.png

খুলুন টিপুন এবং আপনার প্রোগ্রাম এগিয়ে যেতে সক্ষম হবে; আপনাকে আবার এই নির্দিষ্ট ফাইল সম্পর্কে জিজ্ঞাসা করা হবে না।

আপনার প্রজেক্টে বৈধ কনফিগারেশন ফাইল আছে এবং ব্যবহার করছে তা নিশ্চিত করুন

  1. নিশ্চিত করুন যে আপনার বিল্ড সেটিংস ফাইল > বিল্ড সেটিংসে আপনার ইচ্ছাকৃত লক্ষ্যের জন্য সেট করা আছে (iOS বা Android)। আরও সম্পূর্ণ আলোচনার জন্য, ইউনিটি বিল্ড সেটিংস ডকুমেন্টেশন পড়ুন।
  2. আপনার অ্যাপের জন্য কনফিগার ফাইলটি ডাউনলোড করুন (অ্যান্ড্রয়েডের জন্য google-services.json বা iOS-এর জন্য GoogleService-Info.plist ) এবং প্রজেক্ট সেটিংস > আপনার অ্যাপস -এ Firebase কনসোল থেকে লক্ষ্য তৈরি করুন : যদি আপনার কাছে ইতিমধ্যেই এই ফাইলগুলি থাকে, তাহলে আপনার প্রোজেক্টে সেগুলি মুছুন এবং ফাইলের নামের সাথে সংযুক্ত "(1)" বা অন্যান্য সংখ্যা ছাড়াই উপরে প্রদর্শিত বানানটি ঠিক সেভাবেই লেখা হয়েছে কিনা তা নিশ্চিত করে তাদের সাম্প্রতিকতম সংস্করণ দিয়ে প্রতিস্থাপন করুন।
  3. কনসোলে যদি Assets/StreamingAssets/ এ ফাইল সংক্রান্ত একটি বার্তা থাকে, তাহলে নিশ্চিত করুন যে সেখানে কোনো কনসোল বার্তা নেই যে ইউনিটি সেখানে ফাইল সম্পাদনা করতে পারেনি।
  4. নিশ্চিত করুন যে Assets/StreamingAssets/google-services-desktop.json তৈরি হয়েছে এবং ডাউনলোড করা কনফিগার ফাইলের সাথে মেলে।
    • যদি এটি স্বয়ংক্রিয়ভাবে তৈরি না হয় এবং StreamingAssets/ বিদ্যমান না থাকে, তাহলে Assets ডিরেক্টরিতে ম্যানুয়ালি ডিরেক্টরি তৈরি করুন।
    • ইউনিটি এখন google-services-desktop.json তৈরি করেছে কিনা তা পরীক্ষা করুন।

নিশ্চিত করুন যে প্রতিটি Firebase পণ্য এবং EDM4U একচেটিয়াভাবে .unitypackage বা Unity Package Manager-এর মাধ্যমে ইনস্টল করা হয়েছে।

  1. Firebase SDK এবং EDM4U একচেটিয়াভাবে এক বা অন্য পদ্ধতির মাধ্যমে ইনস্টল করা হয়েছে তা নিশ্চিত করতে Assets/ ফোল্ডার এবং ইউনিটি প্যাকেজ ম্যানেজার উভয়ই পরীক্ষা করুন৷
  2. কিছু Google-উন্নত প্লাগইন , যেমন Google Play, এবং তৃতীয় পক্ষের প্লাগইন EDM4U-এর উপর নির্ভর করতে পারে। এই প্লাগইনগুলি তাদের .unitypackage s বা Unity Package Manager (UPM) প্যাকেজে EDM4U অন্তর্ভুক্ত করতে পারে। আপনার প্রজেক্টে EDM4U এর শুধুমাত্র একটি কপি আছে তা নিশ্চিত করুন। যদি কোনো UPM প্যাকেজ EDM4U-এর উপর নির্ভর করে, তাহলে শুধুমাত্র EDM4U-এর UPM সংস্করণগুলি রাখাই উত্তম, যেটি Google APIs for Unity Archive পৃষ্ঠায় পাওয়া যাবে।

আপনার প্রোজেক্টের প্রতিটি ফায়ারবেস পণ্য একই সংস্করণে রয়েছে তা নিশ্চিত করুন।

  1. যদি .unitypackage এর মাধ্যমে Firebase SDK গুলি ইনস্টল করা হয়, তাহলে Assets/Firebase/Plugins/x86_64/ এর অধীনে থাকা সমস্ত FirebaseCppApp লাইব্রেরি একই সংস্করণে আছে কিনা তা পরীক্ষা করুন৷
  2. ইউনিটি প্যাকেজ ম্যানেজার (UPM) এর মাধ্যমে Firebase SDK ইনস্টল করা থাকলে, Windows > Package Manager খুলুন, "Firebase" অনুসন্ধান করুন এবং নিশ্চিত করুন যে সমস্ত Firebase প্যাকেজ একই সংস্করণে রয়েছে।
  3. যদি আপনার প্রোজেক্টে Firebase SDK-এর বিভিন্ন সংস্করণ থাকে, তাহলে আমরা সুপারিশ করব যে আপনি সমস্ত Firebase SDK-কে আবার ইনস্টল করার আগে সম্পূর্ণরূপে সরিয়ে ফেলুন, এবার একই সংস্করণের সাথে। এই মাইগ্রেশন বিভাগে উল্লিখিত পদ্ধতির মাধ্যমে প্রতিটি Firebase প্যাকেজ অপসারণ করা সবচেয়ে পরিষ্কার উপায়।

সমাধানকারী এবং লক্ষ্য ডিভাইস বিল্ড ত্রুটি

যদি আপনার গেমটি এডিটরে কাজ করে (আপনার পছন্দের উপযুক্ত বিল্ড টার্গেটের জন্য কনফিগার করা হয়েছে), তাহলে যাচাই করুন যে এক্সটারনাল ডিপেনডেন্সি ম্যানেজার ফর ইউনিটি (EDM4U) সঠিকভাবে কনফিগার করা হয়েছে এবং কাজ করছে।

EDM4U GitHub সংগ্রহস্থলে প্রক্রিয়াটির এই অংশের জন্য একটি ধাপে ধাপে নির্দেশিকা রয়েছে যা আপনাকে এগিয়ে যাওয়ার আগে পর্যালোচনা এবং অনুসরণ করা উচিত।

'সিঙ্গেল ডেক্স' সমস্যা এবং মিনিফিকেশন (ক্লাউড ফায়ারস্টোর ব্যবহার করলে বাধ্যতামূলক )

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

Cannot fit requested classes in a single dex file.

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

নিম্নলিখিত দুটি ধাপ ক্রমানুসারে প্রয়োগ করা যেতে পারে; শুধুমাত্র মাল্টিডেক্স সক্ষম করুন যদি মিনিফিকেশন সমস্যার সমাধান না করে।

মিনিফিকেশন সক্ষম করুন

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

মাল্টিডেক্স সক্ষম করুন

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

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

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

লক্ষ্য ডিভাইস রানটাইম ত্রুটি বোঝা এবং ঠিক করা

যদি আপনার গেমটি এডিটরে কাজ করে এবং আপনার টার্গেট ডিভাইসের জন্য তৈরি এবং ইনস্টল করা যায় তবে আপনি রানটাইম ত্রুটির সম্মুখীন হন, ডিভাইসে তৈরি লগগুলি পরিদর্শন করুন এবং তদন্ত করুন

এই বিভাগটি বিশদভাবে ব্যাখ্যা করে যে কীভাবে আপনার লগগুলি সম্ভাব্য ত্রুটির জন্য তদন্ত করতে হয় এবং এমন একটি ত্রুটি যা শুধুমাত্র ডিভাইস বা সিমুলেটরে রানটাইমে ঘটে।

অ্যান্ড্রয়েড

সিমুলেটর

  • আপনার এমুলেটরের কনসোলে প্রদর্শিত লগগুলি পরিদর্শন করুন বা Logcat উইন্ডোটি দেখুন।

যন্ত্র

অ্যাডবি এবং অ্যাডবি লগক্যাট এবং কীভাবে সেগুলি ব্যবহার করবেন তার সাথে নিজেকে পরিচিত করুন।

  • আপনি যখন আউটপুট ফিল্টার করতে আপনার কমান্ড লাইন পরিবেশের বিভিন্ন সরঞ্জাম ব্যবহার করতে পারেন, তখন বিকল্পভাবে logcat এর বিকল্পগুলি দেখার কথা বিবেচনা করুন।
  • একটি পরিষ্কার স্লেট দিয়ে একটি ADB সেশন শুরু করার একটি সহজ উপায় হল:

    adb logcat -c && adb logcat <OPTIONS>
    

    যেখানে OPTIONS হল আউটপুট ফিল্টার করার জন্য কমান্ড লাইন পাস করা যেকোনো পতাকা।

অ্যান্ড্রয়েড স্টুডিওর মাধ্যমে লগক্যাট ব্যবহার করা

অ্যান্ড্রয়েড স্টুডিওর মাধ্যমে লগক্যাট ব্যবহার করার সময় অতিরিক্ত অনুসন্ধান সরঞ্জাম উপলব্ধ থাকে যা উত্পাদনশীল অনুসন্ধানগুলিকে সহজ করে তোলে।

iOS

লগ পরিদর্শন

একটি শারীরিক ডিভাইস চালালে, এটি আপনার কম্পিউটারে সংযুক্ত করুন। Xcode এ lldb পরিদর্শন করুন।

সুইফট ইস্যু

আপনি যদি সুইফ্ট উল্লেখ করে ত্রুটির লগগুলিতে চলে যান, সেগুলি সম্পর্কে ইউনিটি বিভাগের জন্য বহিরাগত নির্ভরতা পরিচালকের সাথে পরামর্শ করুন৷

পরবর্তী ধাপ

যদি আপনার গেমে এখনও Firebase সংক্রান্ত সমস্যা কম্পাইল, বিল্ড বা চালানোর সমস্যা থাকে, তাহলে Firebase SDK for Unity সমস্যা পৃষ্ঠাটি তদন্ত করুন এবং একটি নতুন সমস্যা ফাইল করার কথা বিবেচনা করুন। অতিরিক্তভাবে, অতিরিক্ত বিকল্পগুলি সম্পর্কে জানতে Firebase সমর্থন পৃষ্ঠাটি দেখুন।