যদি আপনার অ্যান্ড্রয়েড অ্যাপে নেটিভ লাইব্রেরি থাকে, তাহলে আপনি আপনার অ্যাপের বিল্ড কনফিগারেশনে কয়েকটি ছোট আপডেটের মাধ্যমে Firebase Crashlytics থেকে আপনার নেটিভ কোডের জন্য সম্পূর্ণ স্ট্যাক ট্রেস এবং বিস্তারিত ক্র্যাশ রিপোর্ট সক্ষম করতে পারেন।
এই নির্দেশিকাটি বর্ণনা করে যে NDK-এর জন্য Firebase Crashlytics SDK ব্যবহার করে কীভাবে ক্র্যাশ রিপোর্টিং কনফিগার করতে হয়।
যদি আপনি আপনার ইউনিটি প্রকল্পগুলিতে Crashlytics কীভাবে শুরু করবেন তা খুঁজছেন, তাহলে ইউনিটি শুরু করার নির্দেশিকাটি দেখুন।
শুরু করার আগে
যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে আপনার অ্যান্ড্রয়েড প্রোজেক্টে Firebase যোগ করুন । যদি আপনার অ্যান্ড্রয়েড অ্যাপ না থাকে, তাহলে আপনি একটি নমুনা অ্যাপ ডাউনলোড করতে পারেন।
প্রস্তাবিত : ক্র্যাশ, নন-ফ্যাটাল, বা ANR ইভেন্টের দিকে পরিচালিত ব্যবহারকারীর ক্রিয়াগুলি বুঝতে ব্রেডক্রাম্ব লগগুলি স্বয়ংক্রিয়ভাবে পেতে, আপনার Firebase প্রকল্পে Google Analytics সক্ষম করতে হবে।
যদি আপনার বিদ্যমান Firebase প্রকল্পে Google Analytics সক্ষম না থাকে, তাহলে আপনি আপনার Integrations ট্যাব থেকে Google Analytics সক্ষম করতে পারেন
> Firebase কনসোলে প্রজেক্ট সেটিংস । যদি আপনি একটি নতুন Firebase প্রকল্প তৈরি করেন, তাহলে প্রকল্প তৈরির কর্মপ্রবাহের সময় Google Analytics সক্ষম করুন।
আপনার অ্যাপে নিম্নলিখিত ন্যূনতম প্রয়োজনীয় সংস্করণগুলি আছে কিনা তা নিশ্চিত করুন:
- গ্রেডল ৮.০
- অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.1.0
- গুগল সার্ভিসেস গ্রেডল প্লাগইন ৪.৪.১
ধাপ ১ : আপনার অ্যাপে NDK-এর জন্য Crashlytics SDK যোগ করুন।
আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত<project>/<app-module>/build.gradle.kts অথবা <project>/<app-module>/build.gradle ), অ্যান্ড্রয়েডের জন্য Crashlytics NDK লাইব্রেরির জন্য নির্ভরতা যোগ করুন। লাইব্রেরি সংস্করণ নিয়ন্ত্রণ করতে আমরা Firebase Android BoM ব্যবহার করার পরামর্শ দিই।Crashlytics সাথে সর্বোত্তম অভিজ্ঞতার জন্য, আমরা আপনার Firebase প্রকল্পে Google Analytics সক্ষম করার এবং আপনার অ্যাপে Google Analytics এর জন্য Firebase SDK যোগ করার পরামর্শ দিচ্ছি।
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.4.0")) // Add the dependencies for the Crashlytics NDK and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-crashlytics-ndk") implementation("com.google.firebase:firebase-analytics") }
Firebase Android BoM ব্যবহার করে, আপনার অ্যাপ সর্বদা Firebase Android লাইব্রেরির সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করবে।
(বিকল্প) BoM ব্যবহার না করেই Firebase লাইব্রেরি নির্ভরতা যোগ করুন
যদি আপনি Firebase BoM ব্যবহার না করার সিদ্ধান্ত নেন, তাহলে আপনাকে প্রতিটি Firebase লাইব্রেরি সংস্করণ তার নির্ভরতা লাইনে নির্দিষ্ট করতে হবে।
মনে রাখবেন যে আপনি যদি আপনার অ্যাপে একাধিক Firebase লাইব্রেরি ব্যবহার করেন, তাহলে আমরা দৃঢ়ভাবে লাইব্রেরি সংস্করণগুলি পরিচালনা করার জন্য BoM ব্যবহার করার পরামর্শ দিচ্ছি, যা নিশ্চিত করে যে সমস্ত সংস্করণ সামঞ্জস্যপূর্ণ।
dependencies { // Add the dependencies for the Crashlytics NDK and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-crashlytics-ndk:20.0.3") implementation("com.google.firebase:firebase-analytics:23.0.0") }
ধাপ ২ : আপনার অ্যাপে Crashlytics Gradle প্লাগইন যোগ করুন
আপনার রুট-লেভেল (প্রজেক্ট-লেভেল) গ্র্যাডেল ফাইলে (
<project>/build.gradle.ktsঅথবা<project>/build.gradle)pluginsব্লকে Crashlytics গ্র্যাডেল প্লাগইন যোগ করুন:Kotlin
plugins { // Make sure that you have the AGP plugin 8.1+ dependency id("com.android.application") version "8.1.4" apply false // ... // Make sure that you have the Google services Gradle plugin 4.4.1+ dependency id("com.google.gms.google-services") version "4.4.4" apply false // Add the dependency for the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") version "3.0.6" apply false }
Groovy
plugins { // Make sure that you have the AGP plugin 8.1+ dependency id 'com.android.application' version '8.1.4' apply false // ... // Make sure that you have the Google services Gradle plugin 4.4.1+ dependency id 'com.google.gms.google-services' version '4.4.4' apply false // Add the dependency for the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' version '3.0.6' apply false }
আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত
<project>/<app-module>/build.gradle.ktsঅথবা<project>/<app-module>/build.gradle) Crashlytics Gradle প্লাগইন যোগ করুন:Kotlin
plugins { id("com.android.application") // ... // Make sure that you have the Google services Gradle plugin id("com.google.gms.google-services") // Add the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") }
Groovy
plugins { id 'com.android.application' // ... // Make sure that you have the Google services Gradle plugin id 'com.google.gms.google-services' // Add the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' }
ধাপ ৩ : আপনার বিল্ডে Crashlytics এক্সটেনশন যোগ করুন
আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে (সাধারণত <project>/<app-module>/build.gradle.kts অথবা <project>/<app-module>/build.gradle ) Crashlytics এক্সটেনশনটি কনফিগার করুন।
Kotlin
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension // ... android { // ... buildTypes { getByName("release") { // Add this extension configure<CrashlyticsExtension> { // Enable processing and uploading of native symbols to Firebase servers. // By default, this is disabled to improve build speeds. // This flag must be enabled to see properly-symbolicated native // stack traces in the Crashlytics dashboard. nativeSymbolUploadEnabled = true } } } }
Groovy
// ... android { // ... buildTypes { release { // Add this extension firebaseCrashlytics { // Enable processing and uploading of native symbols to Firebase servers. // By default, this is disabled to improve build speeds. // This flag must be enabled to see properly-symbolicated native // stack traces in the Crashlytics dashboard. nativeSymbolUploadEnabled true } } } }
ধাপ ৪ : স্থানীয় প্রতীকগুলির স্বয়ংক্রিয় আপলোড সেট আপ করুন
NDK ক্র্যাশ থেকে পঠনযোগ্য স্ট্যাক ট্রেস তৈরি করতে, Crashlytics আপনার নেটিভ বাইনারিগুলিতে থাকা প্রতীকগুলি সম্পর্কে জানতে হবে। Crashlytics Gradle প্লাগইনটিতে এই প্রক্রিয়াটি স্বয়ংক্রিয় করার জন্য uploadCrashlyticsSymbolFile BUILD_VARIANT টাস্ক অন্তর্ভুক্ত রয়েছে।
স্বয়ংক্রিয় প্রতীক আপলোডের কাজটি অ্যাক্সেস করার জন্য, নিশ্চিত করুন যে
nativeSymbolUploadEnabledআপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলেtrueতে সেট করা আছে।আপনার স্ট্যাক ট্রেসে পদ্ধতির নামগুলি উপস্থিত হওয়ার জন্য, আপনার NDK লাইব্রেরির প্রতিটি বিল্ডের পরে আপনাকে স্পষ্টভাবে
uploadCrashlyticsSymbolFile BUILD_VARIANTটাস্কটি চালু করতে হবে। উদাহরণস্বরূপ:>./gradlew app:assembleBUILD_VARIANT\ app:uploadCrashlyticsSymbolFileBUILD_VARIANT
NDK-এর জন্য Crashlytics SDK এবং Crashlytics Gradle প্লাগইন উভয়ই নেটিভ শেয়ার্ড অবজেক্টের মধ্যে GNU বিল্ড আইডির উপস্থিতির উপর নির্ভর করে।
আপনি এই আইডির উপস্থিতি যাচাই করতে পারেন
প্রতিটি বাইনারিতে readelf -n। যদি বিল্ড আইডি অনুপস্থিত থাকে, তাহলে যোগ করুনসমস্যা সমাধানের জন্য আপনার বিল্ড সিস্টেমের ফ্ল্যাগগুলিতে -Wl,--build-id।
ধাপ ৫ : সেটআপ শেষ করতে জোর করে একটি পরীক্ষামূলক ক্র্যাশ করুন
Crashlytics সেট আপ করা শেষ করতে এবং Firebase কনসোলের Crashlytics ড্যাশবোর্ডে প্রাথমিক ডেটা দেখতে, আপনাকে একটি পরীক্ষামূলক ক্র্যাশ জোর করে করতে হবে।
আপনার অ্যাপে এমন কোড যোগ করুন যা আপনি জোর করে পরীক্ষামূলক ক্র্যাশ করতে ব্যবহার করতে পারেন।
আপনার অ্যাপের
MainActivityতে নিম্নলিখিত কোডটি ব্যবহার করে আপনি আপনার অ্যাপে একটি বোতাম যুক্ত করতে পারেন যা চাপলে ক্র্যাশ হয়। বোতামটির নাম "টেস্ট ক্র্যাশ"।Kotlin
val crashButton = Button(this) crashButton.text = "Test Crash" crashButton.setOnClickListener { throw RuntimeException("Test Crash") // Force a crash } addContentView(crashButton, ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT))
Java
Button crashButton = new Button(this); crashButton.setText("Test Crash"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { throw new RuntimeException("Test Crash"); // Force a crash } }); addContentView(crashButton, new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
আপনার অ্যাপ তৈরি করুন এবং চালান।
আপনার অ্যাপের প্রথম ক্র্যাশ রিপোর্ট পাঠানোর জন্য পরীক্ষামূলক ক্র্যাশ জোর করে করুন:
আপনার পরীক্ষামূলক ডিভাইস বা এমুলেটর থেকে আপনার অ্যাপটি খুলুন।
আপনার অ্যাপে, উপরের কোডটি ব্যবহার করে যোগ করা "টেস্ট ক্র্যাশ" বোতামটি টিপুন।
আপনার অ্যাপ ক্র্যাশ হওয়ার পর, এটি পুনরায় চালু করুন যাতে আপনার অ্যাপটি ফায়ারবেসে ক্র্যাশ রিপোর্ট পাঠাতে পারে।
আপনার টেস্ট ক্র্যাশ দেখতে Firebase কনসোলের Crashlytics ড্যাশবোর্ডে যান।
যদি আপনি কনসোলটি রিফ্রেশ করে থাকেন এবং পাঁচ মিনিট পরেও পরীক্ষামূলক ক্র্যাশ দেখতে না পান, তাহলে আপনার অ্যাপটি ক্র্যাশ রিপোর্ট পাঠাচ্ছে কিনা তা দেখার জন্য ডিবাগ লগিং সক্ষম করুন ।
আর এই তো! Crashlytics এখন আপনার অ্যাপের ক্র্যাশ পর্যবেক্ষণ করছে, এবং আপনি Crashlytics ড্যাশবোর্ডে ক্র্যাশ রিপোর্ট এবং পরিসংখ্যান দেখতে এবং তদন্ত করতে পারবেন।
পরবর্তী পদক্ষেপ
(প্রস্তাবিত) GWP-ASan রিপোর্ট সংগ্রহ করে নেটিভ মেমোরি ত্রুটির কারণে ক্র্যাশ ডিবাগ করার জন্য সাহায্য পান। এই মেমোরি-সম্পর্কিত ত্রুটিগুলি আপনার অ্যাপের মধ্যে মেমোরি দুর্নীতির সাথে যুক্ত হতে পারে, যা অ্যাপ সুরক্ষা দুর্বলতার প্রধান কারণ। এই ডিবাগিং বৈশিষ্ট্যটির সুবিধা নিতে, নিশ্চিত করুন যে আপনার অ্যাপে GWP-ASan স্পষ্টভাবে সক্ষম করা আছে এবং NDK (v18.3.6+ অথবা Firebase BoM v31.3.0+) এর জন্য সর্বশেষ Crashlytics SDK ব্যবহার করে।
অপ্ট-ইন রিপোর্টিং, লগ, কী এবং অ-মারাত্মক ত্রুটির ট্র্যাকিং যোগ করে আপনার ক্র্যাশ রিপোর্ট সেটআপ কাস্টমাইজ করুন ।
Google Play এর সাথে ইন্টিগ্রেট করুন যাতে আপনি Crashlytics ড্যাশবোর্ডে সরাসরি Google Play ট্র্যাক দ্বারা আপনার অ্যান্ড্রয়েড অ্যাপের ক্র্যাশ রিপোর্ট ফিল্টার করতে পারেন। এটি আপনাকে নির্দিষ্ট বিল্ডগুলিতে আপনার ড্যাশবোর্ডকে আরও ভালভাবে ফোকাস করতে দেয়।
সমস্যা সমাধান
যদি আপনি Firebase কনসোল এবং logcat-এ বিভিন্ন স্ট্যাক ট্রেস দেখতে পান, তাহলে সমস্যা সমাধান নির্দেশিকাটি দেখুন।
প্রতীক আপলোড করার বিকল্প বিকল্পগুলি
উপরের এই পৃষ্ঠায় মূল কর্মপ্রবাহ স্ট্যান্ডার্ড গ্রেডল বিল্ডের জন্য প্রযোজ্য। তবে, কিছু অ্যাপ ভিন্ন কনফিগারেশন বা টুলিং ব্যবহার করে (উদাহরণস্বরূপ গ্রেডল ছাড়া অন্য কোনও বিল্ড প্রক্রিয়া)। এই পরিস্থিতিতে, নিম্নলিখিত বিকল্পগুলি সফলভাবে প্রতীক আপলোড করার জন্য সহায়ক হতে পারে।
বিকল্প : লাইব্রেরি মডিউল এবং বহিরাগত নির্ভরতার জন্য প্রতীক আপলোড করুন
এই বিকল্পটি নিম্নলিখিত পরিস্থিতিতে সহায়ক হতে পারে:
- যদি আপনি Gradle-এর মধ্যে একটি কাস্টমাইজড NDK বিল্ড প্রক্রিয়া ব্যবহার করেন
- যদি আপনার স্থানীয় লাইব্রেরিগুলি একটি লাইব্রেরি/বৈশিষ্ট্য মডিউলে তৈরি করা হয় অথবা কোনও তৃতীয় পক্ষ দ্বারা সরবরাহ করা হয়
- যদি স্বয়ংক্রিয় প্রতীক আপলোডিং কাজটি ব্যর্থ হয় অথবা আপনি ড্যাশবোর্ডে অপ্রতীকী ক্র্যাশ দেখতে পান
স্ট্যান্ডার্ড Crashlytics সিম্বল আপলোড টাস্ক ধরে নেয় যে আপনি আপনার অ্যাপ মডিউলের গ্র্যাডল বিল্ডের অংশ হিসেবে আপনার নেটিভ লাইব্রেরি তৈরি করছেন, CMake এর মতো স্ট্যান্ডার্ড NDK বিল্ড টুল ব্যবহার করে।
তবে, যদি আপনি Gradle-এর মধ্যে একটি কাস্টমাইজড NDK বিল্ড প্রক্রিয়া ব্যবহার করেন, অথবা আপনার নেটিভ লাইব্রেরিগুলি একটি লাইব্রেরি/ফিচার মডিউলে তৈরি করা হয় অথবা কোনও তৃতীয় পক্ষ দ্বারা সরবরাহ করা হয়, তাহলে আপনাকে আপনার আনস্ট্রিপড লাইব্রেরির পথ স্পষ্টভাবে নির্দিষ্ট করতে হতে পারে। এটি সম্পন্ন করার জন্য, আপনি আপনার Gradle বিল্ড ফাইলে Crashlytics এক্সটেনশনের মধ্যে unstrippedNativeLibsDir প্রপার্টি যোগ করতে পারেন।
এই পৃষ্ঠায় আগে উল্লেখিত মূল কর্মপ্রবাহ থেকে নিম্নলিখিত প্রাথমিক কাজগুলি সম্পন্ন করেছেন কিনা তা নিশ্চিত করুন:
যাতে স্বয়ংক্রিয় প্রতীক আপলোডিং টাস্ক আপনার প্রতীক তথ্য খুঁজে পেতে পারে, আপনার মডিউল (অ্যাপ-লেভেল) গ্র্যাডেল ফাইলে নিম্নলিখিতটি যুক্ত করুন (সাধারণত
<project>/<app-module>/build.gradle.ktsঅথবা<project>/<app-module>/build.gradle):Kotlin
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension // ... android { // ... buildTypes { release { configure<CrashlyticsExtension> { nativeSymbolUploadEnabled = true unstrippedNativeLibsDir = file("PATH/TO/UNSTRIPPED/DIRECTORY") } } } }
Groovy
// ... android { // ... buildTypes { release { firebaseCrashlytics { nativeSymbolUploadEnabled true unstrippedNativeLibsDir file("PATH/TO/UNSTRIPPED/DIRECTORY") } } } }
Crashlytics প্লাগইনটি
.soএক্সটেনশন সহ নেটিভ লাইব্রেরির জন্য নির্দিষ্ট ডিরেক্টরিতে পুনরাবৃত্তভাবে অনুসন্ধান করবে। Crashlytics এরপর এই ধরনের সমস্ত লাইব্রেরি থেকে ডিবাগিং প্রতীকগুলি বের করে Firebase সার্ভারে আপলোড করবে।unstrippedNativeLibsDirপ্রপার্টিতে আপনি যা নির্দিষ্ট করতে পারেন তা এখানে:org.gradle.api.Project#files(Object...)এর জন্য অনুমোদিত যেকোনো যুক্তি, যার মধ্যে রয়েছে:java.lang.String,java.io.File, অথবাorg.gradle.api.file.FileCollectionএকটি তালিকা বা
FileCollectionউদাহরণ প্রদান করে একটি একক বিল্ড ফ্লেভারের জন্য একাধিক ডিরেক্টরি( Crashlytics Gradle plugin v3.0.0 দিয়ে শুরু) পৃথক পণ্যে একাধিক ডিরেক্টরি সংগ্রহ করুন এবং স্বাদ তৈরি করুন।
buildTypes { release { configure<CrashlyticsExtension> { nativeSymbolUploadEnabled = true unstrippedNativeLibsDir = file("MY/NATIVE/LIBS") } } productFlavors { flavorDimensions += "feature" create("basic") { dimension = "feature" // ... } create("featureX") { dimension = "feature" configure<CrashlyticsExtension> { unstrippedNativeLibsDir = file("MY/FEATURE_X/LIBS") } } } }
uploadCrashlyticsSymbolFilesBasicReleaseটাস্কটি শুধুমাত্রMY/NATIVE/LIBSএ প্রতীকগুলি আপলোড করবে, কিন্তুuploadCrashlyticsSymbolFilesFeatureXReleaseMY/NATIVE/LIBSএবংMY/FEATURE_X/LIBSউভয় ক্ষেত্রে প্রতীকগুলি আপলোড করবে।অবশেষে, Crashlytics সেট আপ শেষ করতে এবং Firebase কনসোলের Crashlytics ড্যাশবোর্ডে প্রাথমিক ডেটা দেখতে একটি পরীক্ষামূলক ক্র্যাশ চাপুন ।
বিকল্প : নন-গ্রেডল বিল্ড বা অ্যাক্সেসযোগ্য আনস্ট্রিপড নেটিভ লাইব্রেরির জন্য প্রতীক আপলোড করুন
এই বিকল্পটি নিম্নলিখিত পরিস্থিতিতে সহায়ক হতে পারে:
যদি আপনি গ্র্যাডেল ছাড়া অন্য কোনও বিল্ড প্রক্রিয়া ব্যবহার করেন
যদি আপনার আনস্ট্রিপড নেটিভ লাইব্রেরিগুলি এমনভাবে সরবরাহ করা হয় যে গ্রেডল বিল্ডের সময় সেগুলি অ্যাক্সেসযোগ্য না হয়
এই বিকল্পটির জন্য আপনাকে একটি Firebase CLI কমান্ড চালাতে হবে যখন আপনি একটি রিলিজ বিল্ড তৈরি করবেন অথবা এমন কোনও বিল্ড যার জন্য আপনি Firebase কনসোলে প্রতীকী স্ট্যাক ট্রেস দেখতে চান।
এই পৃষ্ঠায় আগে উল্লেখিত মূল কর্মপ্রবাহ থেকে নিম্নলিখিত প্রাথমিক কাজগুলি সম্পন্ন করেছেন কিনা তা নিশ্চিত করুন:
NDK-এর জন্য Crashlytics SDK এবং Crashlytics Gradle প্লাগইন যোগ করা হয়েছে।
মনে রাখবেন যে এই বিকল্পের সাহায্যে, আপনাকে
firebaseCrashlyticsএক্সটেনশন যোগ করতে হবে না বা স্বয়ংক্রিয় প্রতীক আপলোডিং সেট আপ করতে হবে না কারণ আপনি আপনার প্রতীক ফাইল তৈরি এবং আপলোড করতে Firebase CLI (নীচের পরবর্তী ধাপগুলি) ব্যবহার করবেন।প্রতীক আপলোড করার জন্য আপনার পরিবেশ এবং প্রকল্প সেট আপ করুন:
Firebase CLI ইনস্টল করার জন্য নির্দেশাবলী অনুসরণ করুন।
যদি আপনি ইতিমধ্যেই CLI ইনস্টল করে থাকেন, তাহলে এর সর্বশেষ সংস্করণে আপডেট করতে ভুলবেন না।
(শুধুমাত্র Android API লেভেল 30+ ব্যবহারকারী অ্যাপগুলির জন্য) পয়েন্টার ট্যাগিং অক্ষম করতে আপনার অ্যাপের
AndroidManifest.xmlটেমপ্লেট আপডেট করুন:অ্যান্ড্রয়েড প্লেয়ার সেটিংস > প্রকাশনা সেটিংস > বিল্ড > কাস্টম মেইন ম্যানিফেস্ট এর জন্য বাক্সটি চেক করুন।
Assets/Plugins/Android/AndroidManifest.xmlএ অবস্থিত ম্যানিফেস্ট টেমপ্লেটটি খুলুন।অ্যাপ্লিকেশন ট্যাগে নিম্নলিখিত বৈশিষ্ট্য যোগ করুন:
<application android:allowNativeHeapPointerTagging="false" ... />
আপনার প্রকল্প তৈরি করুন।
আপনার প্রতীকের তথ্য আপলোড করুন।
আপনার বিল্ড শেষ হয়ে গেলে, একটি Crashlytics -compatible symbol ফাইল তৈরি করুন এবং নিম্নলিখিত Firebase CLI কমান্ডটি চালিয়ে Firebase সার্ভারে আপলোড করুন:
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
FIREBASE_APP_ID : আপনার Firebase Android অ্যাপ আইডি (আপনার প্যাকেজের নাম নয়)
উদাহরণ Firebase Android অ্যাপ আইডি:1:567383003300:android:17104a2ced0c9b9bআপনার Firebase অ্যাপ আইডি খুঁজে বের করার দুটি উপায় এখানে দেওয়া হল:
আপনার
google-services.jsonফাইলে, আপনার অ্যাপ আইডি হলmobilesdk_app_idমান; অথবাFirebase কনসোলে, আপনার Project settings এ যান। Your apps কার্ডে স্ক্রোল করুন, তারপর পছন্দসই Firebase অ্যাপের অ্যাপ আইডি খুঁজে পেতে তার উপর ক্লিক করুন।
PATH/TO/SYMBOLS : CLI দ্বারা তৈরি প্রতীক ফাইলের পথ
একটি Android Studio প্রকল্পে রপ্তানি করা হয়েছে — PATH/TO/SYMBOLS যেকোনো ডিরেক্টরি হতে পারে। Firebase CLI
.soএক্সটেনশন সহ নেটিভ লাইব্রেরির জন্য নির্দিষ্ট ডিরেক্টরিতে পুনরাবৃত্তভাবে অনুসন্ধান করবে।ইউনিটির ভেতর থেকে সরাসরি APK তৈরি করা হয়েছে — PATH/TO/SYMBOLS হল আপনার বিল্ড শেষ হওয়ার পরে প্রজেক্ট রুট ডিরেক্টরিতে তৈরি জিপ করা প্রতীক ফাইলের পথ (উদাহরণস্বরূপ:)।
myproject/myapp-1.0-v100.symbols.zip)।
প্রতীক ফাইল তৈরি এবং আপলোডের জন্য Firebase CLI কমান্ড ব্যবহারের জন্য উন্নত বিকল্পগুলি দেখুন।
পতাকা বিবরণ --generator=csymডিফল্ট ব্রেকপ্যাড জেনারেটরের পরিবর্তে লিগ্যাসি cSYM প্রতীক ফাইল জেনারেটর ব্যবহার করে
ব্যবহারের জন্য সুপারিশ করা হয় না। আমরা ডিফল্ট ব্রেকপ্যাড প্রতীক ফাইল জেনারেটর ব্যবহার করার পরামর্শ দিচ্ছি।
--generator=breakpadব্রেকপ্যাড প্রতীক ফাইল জেনারেটর ব্যবহার করে
মনে রাখবেন যে প্রতীক ফাইল তৈরির জন্য ডিফল্ট হল ব্রেকপ্যাড। যদি আপনি যোগ করে থাকেন তবেই এই পতাকাটি ব্যবহার করুন
আপনার বিল্ড কনফিগারেশনে symbolGenerator { csym() }এবং আপনি এটিকে ওভাররাইড করে ব্রেকপ্যাড ব্যবহার করতে চান।--dry-runপ্রতীক ফাইল তৈরি করে কিন্তু আপলোড করে না।
প্রেরিত ফাইলগুলির বিষয়বস্তু পরীক্ষা করতে চাইলে এই পতাকাটি কার্যকর।
--debugঅতিরিক্ত ডিবাগিং তথ্য প্রদান করে অবশেষে, Crashlytics সেট আপ শেষ করতে এবং Firebase কনসোলের Crashlytics ড্যাশবোর্ডে প্রাথমিক ডেটা দেখতে একটি পরীক্ষামূলক ক্র্যাশ চাপুন ।
জোর করে ক্র্যাশ করার অংশ হিসেবে আপনার অ্যাপ তৈরি করার পরে, আপনার প্রতীক ফাইল আপলোড করার জন্য Firebase CLI
crashlytics:symbols:uploadকমান্ডটি চালাতে ভুলবেন না।