اگر برنامه Android شما حاوی کتابخانههای بومی است، میتوانید ردیابی پشته کامل و گزارشهای خرابی دقیق را برای کد بومی خود از Firebase Crashlytics با چند بهروزرسانی کوچک در پیکربندی ساخت برنامهتان ف��ا�� کنید.
این راهنما نحوه پیکربندی گزارش خرابی با Firebase Crashlytics SDK برای NDK را شرح میدهد.
اگر به دنبال نحوه شروع کار با Crashlytics در پروژه های یونیتی خود هستید، راهنمای شروع Unity را بررسی کنید.
قبل از شروع
اگر قبلاً این کار را نکرده اید، Firebase را به پروژه اندروید خود اضافه کنید . اگر برنامه اندروید ندارید، می توانید یک برنامه نمونه دانلود کنید.
توصیه میشود : برای دریافت خودکار گزارشهای خرده نان برای درک اقدامات کاربر که منجر به خرابی، رویداد غیرمرگبار یا ANR میشود، باید Google Analytics در پروژه Firebase خود فعال کنید.
اگر پروژه Firebase موجود شما Google Analytics فعال نکرده اس��، می توانید Google Analytics از برگه Integrations فعال کنید.
Firebase . > تنظیمات پروژه در کنسولاگر در حال ایجاد یک پروژه Firebase هستید، Google Analytics در جریان کار ایجاد پروژه فعال کنید.
مطمئن شوید که برنامه شما حداقل نسخه های مورد نیاز زیر را دارد: Gradle 8.0 پلاگین اندروید Gradle 8.1.0 خدمات گوگل پلاگین Gradle 4.4.1
مرحله ۱ : Crashlytics SDK for NDK را به برنامه خود اضافه کنید
<project>/<app-module>/build.gradle.kts
یا <project>/<app-module>/build.gradle
)، وابستگی را برای Crashlytics NDK اضافه کنید. کتابخانه برای اندروید توصیه میکنیم از Firebase Android BoM برای کنترل نسخهسازی کتابخانه استفاده کنید.برای تجربه بهینه با Crashlytics ، توصیه میکنیم Google Analytics در پروژه Firebase خود فعال کنید و Firebase SDK برای Google Analytics را به برنامه خود اضافه کنید.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.7.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 استفاده میکند.
(جایگزین) وابستگی های کتابخانه Firebase را بدون استفاده از BoM اضافه کنید
اگر تصمیم گرفتید از 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:19.3.0") implementation("com.google.firebase:firebase-analytics:22.1.2") }
مرحله 2 : افزونه Crashlytics Gradle را به برنامه خود اضافه کنید
در فایل Gradle در سطح ریشه (سطح پروژه) خود (
<project>/build.gradle.kts
یا<project>/build.gradle
)، افزونه Crashlytics Gradle را به بلوکplugins
اضافه کنید: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.2" apply false // Add the dependency for the Crashlytics Gradle plugin id("com.google.firebase.crashlytics") version "3.0.2" 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.2' apply false // Add the dependency for the Crashlytics Gradle plugin id 'com.google.firebase.crashlytics' version '3.0.2' apply false }
در فایل Gradle ماژول (سطح برنامه) خود (معمولا
<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' }
مرحله 3 : افزونه Crashlytics را به بیلد خود اضافه کنید
در فایل Gradle ماژول (سطح برنامه) خود (معمولا <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
}
}
}
}
مرحله 4 : بارگذاری خودکار نمادهای بومی را تنظیم کنید
برای ایجاد ردیابی پشته قابل خواندن از خرابی های NDK، Crashlytics باید درباره نمادهای موجود در باینری های بومی شما بداند. افزونه Crashlytics Gradle شامل کار uploadCrashlyticsSymbolFile BUILD_VARIANT
برای خودکارسازی این فرآیند است.
برای اینکه بتوانید به وظیفه آپلود خودکار نمادها دسترسی داشته باشید، مطمئن شوید که
nativeSymbolUploadEnabled
در فایل Gradle ماژول (سطح برنامه) رویtrue
تنظیم شده باشد.برای اینکه نام روشها در ردی��بی پشته شما ظاهر شود، باید صراحتاً وظیفه
uploadCrashlyticsSymbolFile BUILD_VARIANT
پس از هر ساخت کتابخانه NDK خود فراخوانی کنید. به عنوان مثال:>./gradlew app:assembleBUILD_VARIANT\ app:uploadCrashlyticsSymbolFileBUILD_VARIANT
هم Crashlytics SDK برای NDK و هم پلاگین Crashlytics Gradle به وجود شناسه ساخت گنو در اشیاء مشترک بومی بستگی دارد.
با اجرا کردن می توانید وجود این شناسه را تأیید کنید readelf -n
در هر دودویی. اگر شناسه ساخت وجود ندارد، اضافه کنید-Wl,--build-id
به پرچمهای سیستم ساخت شما برای رفع مشکل.
مرحله 5 : یک خرابی آزمایشی را مجبور کنید تا راهاندازی تمام شود
کدی را به برنامه خود اضافه کنید که می توانید از آن برای اجبار تست خرابی استفاده کنید. می توانید از کد زیر در MainActivity
برنامه خود استفاده کنید تا دکمه ای را به برنامه خود اضافه کنید که با فشار دادن آن باعث خرابی می شود. این دکمه دارای برچسب "تست تصادف" است.Kotlin+KTX 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)); اپلیکیشن خود را بسازید و اجرا کنید. برای ارسال اولین گزارش خرابی برنامه خود، خرابی آزمایشی را اجباری کنید: برنامه خود را از دستگاه آزمایشی یا شبیه ساز خود باز کنید. در برنامه خود، دکمه «Test Crash» را که با استفاده از کد بالا اضافه کردید، فشار دهید. پس از خراب شدن برنامه، آن را مجددا راه اندازی کنید تا برنامه شما بتواند گزارش خرابی را به Firebase ارسال کند.
برای مشاهده خرابی آزمایشی خود، به داشبورد Crashlytics کنسول Firebase بروید. اگر کنسول را بهروزرسانی کردهاید و بعد از پنج دقیقه هنوز خرابی آزمایشی را نمیبینید، ثبت اشکالزدایی را فعال کنید تا ببینید آیا برنامه شما گزارشهای خرابی را ارسال میکند یا خیر.
و بس! Crashlytics اکنون برنامه شما را برای خرابی ها زیر نظر دارد و می توانید گزارش ها و آمار خرابی ها را در داشبورد Crashlytics مشاهده و بررسی کنید.
مراحل بعدی
(توصیه میشود) با جمعآوری گزارشهای GWP-ASan برای اشکالزدایی خرابیهای ناشی از خطاهای حافظه بومی کمک بگیرید. این خطاهای مربوط به حافظه می تواند با خراب شدن حافظه در برنامه شما مرتبط باشد، که علت اصلی آسیب پذیری های امنیتی برنامه است. برای استفاده از این ویژگی اشکالزدایی، مطمئن شوید که برنامه شما GWP-ASan را به صراحت فعال کرده است و از جدیدترین SDK Crashlytics برای NDK (v18.3.6+ یا Firebase BoM v31.3.0+) استفاده میکند. با Google Play یکپارچه شوید تا بتوانید گزارشهای خرابی برنامه Android خود را با استفاده از مسیر Google Play مستقیماً در داشبورد Crashlytics فیلتر کنید. این به شما امکان می دهد داشبورد خود را بهتر بر روی ساخت های خاص متمرکز کنید.
عیب یابی
گزینه های جایگزین برای بارگذاری نمادها
گزینه : نمادها را برای ماژول های کتابخانه و وابستگی های خارجی بارگذاری کنید
اگر از یک فرآیند ساخت NDK سفارشی شده در Gradle استفاده می کنید اگر کتابخانههای بومی شما در یک ماژول کتابخانه/ویژگی ساخته شدهاند یا توسط شخص ثالث ارائه شدهاند اگر کار آپلود خودکار نماد ناموفق باشد یا خرابی های غیر نمادین را در داشبورد مشاهده کنید
گزینه : بارگذاری نمادها برای ساختهای غیر Gradle یا کتابخانههای بومی غیرقابل دسترس
اگر از یک فرآیند ساخت غیر از Gradle استفاده می کنید اگر کتابخانههای بومی غیرمستقیم شما به گونهای در اختیار شما قرار میگیرد که در طول ساختهای Gradle در دسترس نیستند.