# Firebase Crashlytics Android Setup Guide Important references: - Refer to the `firebase-basics` skills, particularly those for project and app setup, before proceeding. ## Project and App Setup Before you begin, ensure you have the following. If a `google-services.json` file is present, then use that Firebase project and app. Otherwise you may need to create them. - **Firebase CLI**: Installed and logged in (see `firebase-basics`). - **Firebase Project**: Created via `npx -y firebase-tools@latest projects:create` (see `firebase-basics`). - **Firebase App**: Created via `npx -y firebase-tools@latest apps:create ANDROID --package-name=` The `google-services.json` file must be present in the Android app's module directory. If missing, get the config using the Firebase CLI: `npx -y firebase-tools@latest apps:sdkconfig ANDROID `. ## Add Dependencies to Gradle Build These changes are made to your Android project's Gradle files. ### Project-level `build.gradle.kts` (`/build.gradle.kts`) Add the latest version of the Crashlytics Gradle plugin to the `plugins` block. Fetch the [latest version from the Google Maven repository](https://maven.google.com/web/index.html?q=firebase-crashlytics-gradle#com.google.firebase:firebase-crashlytics-gradle) before adding this. ```kotlin plugins { // ... other plugins id("com.google.firebase.crashlytics") version "" apply false } ``` ### App-level `build.gradle.kts` (`//build.gradle.kts`) 1. Add the Crashlytics plugin to the `plugins` block: ```kotlin plugins { // ... other plugins id("com.google.firebase.crashlytics") } ``` 1. Add the Firebase Crashlytics dependency to the `dependencies` block. It is recommended to use the Firebase Bill of Materials (BoM) to manage SDK versions. Fetch the [latest version from the Google Maven repository](https://maven.google.com/web/index.html?q=firebase-bom#com.google.firebase:firebase-bom) before adding this. ```kotlin dependencies { // ... other dependencies // Import the Firebase BoM implementation(platform("com.google.firebase:firebase-bom:")) // Add the dependencies for the Crashlytics and Analytics implementation("com.google.firebase:firebase-crashlytics") implementation("com.google.firebase:firebase-analytics") } ``` ## Follow up Steps ### Optional: Install the NDK SDK to capture native crashes If your app uses native code (C/C++), or includes a library with native code, you can configure Crashlytics to report native crashes. App-level `build.gradle.kts` (`//build.gradle.kts`) 1. Add the `firebase-crashlytics-ndk` dependency: ```kotlin dependencies { // ... other dependencies implementation("com.google.firebase:firebase-crashlytics-ndk") } ``` 1. Enable the `nativeSymbolUpload` flag in your `buildTypes` configuration. This will automatically upload symbol files for your native code, which are required to symbolicate native crash reports. ```kotlin import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension android { // ... other config buildTypes { getByName("release") { // ... configure { nativeSymbolUploadEnabled = true } } } } ``` After these changes, Crashlytics will automatically report crashes in your app's native code. ### Required: Force a Test Crash To verify that Crashlytics is correctly installed, you need to force a test crash in the app. 1. Add code to your main activity (e.g., in `onCreate`) to trigger a crash a few seconds after app startup: ```kotlin import android.os.Handler import android.os.Looper // ... in your Activity's onCreate method or similar startup logic Handler(Looper.getMainLooper()).postDelayed({ throw RuntimeException("Test Crash") // Force a crash after 3 seconds }, 3000) ``` 1. Run your app on a device or emulator. The app should crash after a short delay. 1. Restart the app. The Crashlytics SDK will send the crash report to Firebase on the next app launch. 1. After a few minutes, the crash should be available in the Firebase console. Go to **DevOps & Engagement** > **Crashlytics** to view your dashboard and crash reports. - If the Firebase MCP server is installed, use the `get_report` tool to check that a crash was received. - As a fallback, visit the Crashlytics dashboard in the Firebase console to see the new crash report. 5. After verifying that Firebase has received the crash report - either using the `get_report` tool or manually viewing it in the Firebase console - remove the code from step 1 that triggers the crash. This prevents the application from always crashing on start up after a delay. ### Optional: Add custom debugging information Customize reports to help you better understand what's happening in your app and the circumstances around events reported to Crashlytics. See [Customize Crash Reports for Android](https://firebase.google.com/docs/crashlytics/android/customize-crash-reports.md).