| প্ল্যাটফর্ম বেছে নিন: | iOS+ Android Android NDK Flutter Unity |
এই নির্দেশিকা থেকে আপনি কীভাবে Firebase Crashlytics আপনার Unity প্রোজেক্টে ব্যবহার শুরু করবেন তা জানতে পারবেন।
আপনার অ্যাপে Firebase Crashlytics SDK সেট-আপ করার পরে, আপনি Firebase কনসোলে বিস্তারিত ক্র্যাশ রিপোর্ট পেতে পারবেন।
Crashlytics সেট-আপ করার জন্য Firebase কনসোল ও আপনার IDE (যেমন, Firebase কনফিগারেশন ফাইল ও Crashlytics SDK যোগ করা) দুটিতেই টাস্ক প্রয়োজন। সেট-আপ সম্পূর্ণ করতে, Firebase-এ আপনার প্রথম ক্র্যাশ রিপোর্ট পাঠানোর জন্য আপনাকে একটি টেস্ট ক্র্যাশ করতে হবে।
শুরু করার আগে
আপনি আগে থেকে না করে থাকলে, আপনার Unity প্রোজেক্টে Firebase যোগ করুন । আপনার কাছে Unity প্রোজেক্ট না থাকলে, আপনি একটি স্যাম্পেল অ্যাপ ডাউনলোড করতে পারবেন।
সাজেস্ট করা: ক্র্যাশ, নন-ফ্যাটাল বা ANR ইভেন্ট পর্যন্ত ব্যবহারকারীর অ্যাকশন বুঝতে ব্রেডক্রাম্ব লগ অটোমেটিক পেতে, Firebase প্রোজেক্টে আপনাকে Google Analytics চালু করতে হবে।
আপনি নতুন Firebase প্রোজেক্ট তৈরি করলে, প্রোজেক্ট তৈরি করার ওয়ার্কফ্লো চলাকালীন Google Analytics চালু করুন।
আপনি যদি এমন কোনও আগে থেকে থাকা Firebase প্রোজেক্ট ব্যবহার করেন যেখানে Google Analytics চালু করা নেই, তাহলে আপনি Firebase কনসোলের
সেটিংস > ইন্টিগ্রেশন পৃষ্ঠা থেকে এটি চালু করতে পারবেন।
ধাপ ১: আপনার অ্যাপে Crashlytics SDK যোগ করুন
মনে রাখবেন, আপনার Firebase প্রোজেক্টের সাথে Unity প্রোজেক্ট রেজিস্টার করার সময়, আপনি হয়তো আগেই Firebase Unity SDK ডাউনলোড করেছেন এবং নিম্নলিখিত ধাপে বর্ণিত প্যাকেজ যোগ করেছেন।
Firebase Unity SDK ডাউনলোড করুন, তারপর SDK-কে কোনও সুবিধাজনক জায়গায় আনজিপ করুন। Firebase Unity SDK কোনও নির্দিষ্ট প্ল্যাটফর্মের জন্য নয়।
আপনার খোলা Unity প্রোজেক্টে, এখানে নেভিগেট করুন: অ্যাসেট > প্যাকেজ ইমপোর্ট করুন > কাস্টম প্যাকেজ।
আনজিপ করা SDK থেকে, Crashlytics SDK (
FirebaseCrashlytics.unitypackage) ইমপোর্ট করার বিকল্প বেছে নিন।ব্রেডক্রাম্ব লগ এর সুবিধা নিতে, আপনার অ্যাপে Google Analytics-এর জন্য Firebase SDK যোগ করুন (
FirebaseAnalytics.unitypackage)। নিশ্চিত করুন যে আপনার Firebase প্রোজেক্টে Google Analytics চালু করা আছে ।Unity প্যাকেজ ইমপোর্ট করুন উইন্ডোতে, ইমপোর্ট করুন বিকল্পে ক্লিক করুন।
ধাপ ২: Crashlytics ইনিশিয়ালাইজ করুন
নতুন C# স্ক্রিপ্ট তৈরি করুন, তারপর সেটি দৃশ্যের
GameObject-এ যোগ করুন।আপনার প্রথম দৃশ্য খুলুন, তারপর
GameObjectনামেরCrashlyticsInitializerএকটি খালি দৃশ্য তৈরি করুন।নতুন অবজেক্টের জন্য ইনস্পেক্টর-এ কম্পোনেন্ট যোগ করুন বিকল্পে ক্লিক করুন।
CrashlyticsInitializerঅবজেক্টে যোগ করার জন্য আপনারCrashlyticsInitস্ক্রিপ্ট বেছে নিন।
স্ক্রিপ্টের
Startপদ্ধতিতে Crashlytics ইনিশিয়ালাইজ করুন:using System.Collections; using System.Collections.Generic; using UnityEngine; // Import Firebase and Crashlytics using Firebase; using Firebase.Crashlytics; public class CrashlyticsInit : MonoBehaviour { // Use this for initialization void Start () { // Initialize Firebase Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => { var dependencyStatus = task.Result; if (dependencyStatus == Firebase.DependencyStatus.Available) { // Create and hold a reference to your FirebaseApp, // where app is a Firebase.FirebaseApp property of your application class. // Crashlytics will use the DefaultInstance, as well; // this ensures that Crashlytics is initialized. Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance; // When this property is set to true, Crashlytics will report all // uncaught exceptions as fatal events. This is the recommended behavior. Crashlytics.ReportUncaughtExceptionsAsFatal = true; // Set a flag here for indicating that your project is ready to use Firebase. } else { UnityEngine.Debug.LogError(System.String.Format( "Could not resolve all Firebase dependencies: {0}",dependencyStatus)); // Firebase Unity SDK is not safe to use here. } }); } // Update is called once per frame void Update() // ... }
ধাপ ৩: (শুধুমাত্র Android) প্রতীক আপলোড করার জন্য সেট-আপ করা
IL2CPP ব্যবহার করে এমন Android অ্যাপের ক্ষেত্রেই শুধু এই ধাপটি প্রয়োজন।
Unity-র Mono স্ক্রিপ্টিং ব্যাকএন্ড ব্যবহার করে এমন Android অ্যাপের জন্য, এইসব ধাপের প্রয়োজন নেই।
Apple প্ল্যাটফর্ম অ্যাপের ক্ষেত্রে, এইসব ধাপের প্রয়োজন নেই কারণ Firebase Unity Editor প্লাগ-ইন অটোমেটিক সিম্বল আপলোড করার জন্য আপনার Xcode প্রোজেক্ট কনফিগার করে।
Crashlytics Unity-এর জন্য SDK (v8.6.1+) অটোমেটিক NDK ক্র্যাশ রিপোর্টিং অন্তর্ভুক্ত করে, যা Crashlytics-কে Android-এ Unity IL2CPP ক্র্যাশ অটোমেটিক রিপোর্ট করতে দেয়। তবে, Crashlytics ড্যাশবোর্ডে নেটিভ লাইব্রেরি ক্র্যাশের জন্য সিম্বল সহ স্ট্যাক ট্রেস দেখতে হলে, আপনাকে অবশ্যই Firebase CLI ব্যবহার করে বিল্ড করার সময় সিম্বল সংক্রান্ত তথ্য আপলোড করতে হবে।
সিম্বল আপলোড করার জন্য সেট-আপ করতে, Firebase CLI ইনস্টল করার নির্দেশাবলী অনুসরণ করুন।
আপনি আগেই CLI ইনস্টল করে থাকলে, লেটেস্ট ভার্সনে আপডেট করতে ভুলবেন না।
আপনার প্রোজেক্ট ফাইল যোগ করলে, এটি দ্রুত শুরু করার একটি সুবিধাজনক বিকল্প হয়ে ওঠে।ধাপ ৪: আপনার প্রোজেক্ট তৈরি করুন এবং প্রতীক আপলোড করুন
সিম্বল সহ স্ট্যাক ট্রেস দেখতে চান।iOS+ (Apple প্ল্যাটফর্ম)
বিল্ড সেটিংস ডায়ালগ থেকে, আপনার প্রোজেক্ট Xcode ওয়ার্কস্পেসে এক্সপোর্ট করুন।
আপনার অ্যাপ তৈরি করুন।
Apple প্ল্যাটফর্মের জন্য, Firebase Unity Editor প্লাগ-ইন অটোমেটিক আপনার Xcode প্রোজেক্ট কনফিগার করে, যাতে প্রতিটি বিল্ডের জন্য Firebase সার্ভারে Crashlytics-মানানসই সিম্বল ফাইল জেনারেট ও আপলোড করা যায়।
Android
বিল্ড সেটিংস ডায়ালগ থেকে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
আপনার প্রোজেক্ট তৈরি করতে Android Studio প্রোজেক্টে এক্সপোর্ট করুন; অথবা
Unity Editor থেকে সরাসরি আপনার APK তৈরি করুন।
বিল্ড করার আগে, Create symbols.zip-এর চেকবক্সটি Build Settings ডায়ালগে চেক করা আছে কিনা তা নিশ্চিত করুন।
আপনার বিল্ড সম্পূর্ণ হয়ে গেলে, Crashlytics-মানানসই সিম্বল ফাইল তৈরি করুন এবং নিম্নলিখিত Firebase CLI কমান্ড চালিয়ে Firebase সার্ভারে এটি আপলোড করুন:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID: আপনার Firebase Android অ্যাপ আইডি (আপনার প্যাকেজের নাম নয়)
Firebase Android অ্যাপ আইডির উদাহরণ:1:567383003300:android:17104a2ced0c9b9bPATH/TO/SYMBOLS: CLI-এর মাধ্যমে তৈরি করা সিম্বল ফাইলের পাথ
Android Studio প্রোজেক্টে এক্সপোর্ট করা হয়েছে — PATH/TO/SYMBOLS হল
unityLibrary/symbolsডিরেক্টরি, যা Gradle বা Android Studio-র মাধ্যমে অ্যাপ তৈরি করার পরে এক্সপোর্ট করা প্রোজেক্ট রুটে তৈরি হয়।Unity-র মধ্যে থেকে সরাসরি APK তৈরি করা হয়েছে — PATH/TO/SYMBOLS হল আপনার বিল্ড সম্পূর্ণ হওয়ার পরে প্রোজেক্টের মূল ডিরেক্টরিতে তৈরি হওয়া জিপ করা সিম্বল ফাইলের পাথ (যেমন:
)।myproject/myapp-1.0-v100.symbols.zip
সিম্বল ফাইল তৈরি ও আপলোড করার জন্য Firebase CLI কমান্ড ব্যবহার করার উন্নত বিকল্প দেখুন
অভিযোগ জানান বিবরণ --generator=csymডিফল্ট Breakpad জেনারেটরের পরিবর্তে লেগ্যাসি cSYM প্রতীক ফাইল জেনারেটর ব্যবহার করে
ব্যবহারের জন্য সাজেস্ট করা হয় না। আমরা ডিফল্ট Breakpad প্রতীক ফাইল জেনারেটর ব্যবহার করার সাজেশন দিই।
--generator=breakpadBreakpad প্রতীক ফাইল জেনারেটর ব্যবহার করে
মনে রাখবেন, প্রতীকী ফাইল তৈরির ডিফল্ট সেটিং হল Breakpad। আপনি বিল্ড কনফিগারেশনে
যোগ করে থাকলে এবং এর পরিবর্তে Breakpad ব্যবহার করতে চাইলে, তবেই এই ফ্ল্যাগ ব্যবহার করুন।symbolGenerator { csym() }--dry-runসিম্বল ফাইল তৈরি করে, কিন্তু সেগুলি আপলোড করে না
পাঠানো ফাইলগুলির কন্টেন্ট পরিদর্শন করতে চাইলে এই ফ্ল্যাগটি কাজে লাগে।
--debugডিবাগিং সংক্রান্ত অতিরিক্ত তথ্য প্রদান করে
ধাপ ৫: সেট-আপ সম্পূর্ণ করতে একটি টেস্ট ক্র্যাশ করুন
Crashlytics সেট-আপ করা সম্পূর্ণ করতে এবং Firebase কনসোলের Crashlytics ড্যাশবোর্ডে প্রাথমিক ডেটা দেখতে, আপনাকে জোর করে একটি টেস্ট ক্র্যাশ করতে হবে।
আগে থেকে থাকা
GameObjectখুঁজুন, তারপর নিম্নলিখিত স্ক্রিপ্ট এতে যোগ করুন। এই স্ক্রিপ্টটি আপনার অ্যাপ চালানোর কয়েক সেকেন্ড পরে একটি টেস্ট ক্র্যাশ করবে।using System; using UnityEngine; public class CrashlyticsTester : MonoBehaviour { int updatesBeforeException; // Use this for initialization void Start () { updatesBeforeException = 0; } // Update is called once per frame void Update() { // Call the exception-throwing method here so that it's run // every frame update throwExceptionEvery60Updates(); } // A method that tests your Crashlytics implementation by throwing an // exception every 60 frame updates. You should see reports in the // Firebase console a few minutes after running your app with this method. void throwExceptionEvery60Updates() { if (updatesBeforeException > 0) { updatesBeforeException--; } else { // Set the counter to 60 updates updatesBeforeException = 60; // Throw an exception to test your Crashlytics implementation throw new System.Exception("test exception please ignore"); } } }
আপনার অ্যাপ তৈরি করুন এবং বিল্ড সম্পূর্ণ হওয়ার পরে প্রতীক সংক্রান্ত তথ্য আপলোড করুন।
iOS+: Firebase Unity Editor প্লাগ-ইন আপনার সিম্বল ফাইল আপলোড করার জন্য Xcode প্রোজেক্ট অটোমেটিক কনফিগার করে।
Android: IL2CPP ব্যবহার করে এমন Android অ্যাপের জন্য, আপনার সিম্বল ফাইল আপলোড করতে Firebase CLI
crashlytics:symbols:uploadকমান্ড রান করুন।
আপনার অ্যাপ চালান। অ্যাপ চালু হয়ে গেলে, ডিভাইস লগ দেখুন এবং
CrashlyticsTesterথেকে ব্যতিক্রম ট্রিগার হওয়ার জন্য অপেক্ষা করুন।iOS+: Xcode-এর নিচের প্যানে লগ দেখুন।
Android: টার্মিনালে নিম্নলিখিত কমান্ড চালিয়ে লগ দেখুন:
adb logcat.
Firebase কনসোলে, DevOps ও এনগেজমেন্ট > Crashlytics ড্যাশবোর্ডে গিয়ে আপনার টেস্ট ক্র্যাশ রিপোর্ট চেক করুন।
আপনি কনসোল রিফ্রেশ করার পরেও পাঁচ মিনিট পরে টেস্ট ক্র্যাশ দেখতে না পেলে, আপনার অ্যাপ ক্র্যাশ রিপোর্ট পাঠাচ্ছে কিনা তা দেখতে ডিবাগ লগিং চালু করুন।
এই পর্যন্তই! Crashlytics এখন আপনার অ্যাপ ক্র্যাশ করছে কিনা তা মনিটর করছে। আপনার সব রিপোর্ট ও পরিসংখ্যান দেখতে ও তদন্ত করতে Crashlytics ড্যাশবোর্ড দেখুন।
পরবর্তী ধাপ
(সাজেস্ট করা) IL2CPP ব্যবহার করে এমন Android অ্যাপের জন্য, নেটিভ মেমরি সংক্রান্ত সমস্যার কারণে হওয়া ক্র্যাশ ডিবাগ করার ব্যাপারে সাহায্য পেতে GWP-ASan রিপোর্ট সংগ্রহ করুন। মেমরি সংক্রান্ত এইসব সমস্যা আপনার অ্যাপের মধ্যে মেমরি করাপশনের সাথে যুক্ত থাকতে পারে, যা অ্যাপের নিরাপত্তা সংক্রান্ত দুর্বলতার প্রধান কারণ। এই ডিবাগিং ফিচারের সুবিধা নিতে, আপনার অ্যাপ যেন লেটেস্ট Crashlytics SDK for Unity (v10.7.0+) ব্যবহার করে এবং GWP-ASan স্পষ্টভাবে চালু করা থাকে (এর জন্য আপনাকে Android অ্যাপ ম্যানিফেস্ট পরিবর্তন করতে হবে)।
ঐচ্ছিক রিপোর্টিং, লগ, কী এবং মারাত্মক নয় এমন সমস্যার ট্র্যাকিং যোগ করে আপনার ক্র্যাশ রিপোর্ট সেট-আপ কাস্টমাইজ করুন ।
উন্নত বিশ্লেষণ ও ফিচারের জন্য, যেমন আপনার ডেটা কোয়েরি করা, কাস্টম ড্যাশবোর্ড তৈরি করা এবং কাস্টম অ্যালার্ট সেট-আপ করার জন্য, BigQuery বা Cloud Logging-এ আপনার ডেটা এক্সপোর্ট করুন ।