|---|---|
| **Select platform:** | [iOS+](https://firebase.google.com/docs/crashlytics/ios/get-deobfuscated-reports.md.txt) [Android](https://firebase.google.com/docs/crashlytics/android/get-deobfuscated-reports.md.txt) [Web](https://firebase.google.com/docs/crashlytics/web/get-deobfuscated-reports.md.txt) [Flutter](https://firebase.google.com/docs/crashlytics/flutter/get-deobfuscated-reports.md.txt) [Unity](https://firebase.google.com/docs/crashlytics/unity/get-deobfuscated-reports.md.txt) |

<br />

> [!NOTE]
> We recommend using the latest version of the Crashlytics Unity SDK (v14.1.0). [Download the latest version.](https://firebase.google.com/download/unity)

## iOS+ (Apple platforms)

For Apple platform apps using the Crashlytics Unity SDK 8.2.0+, the Firebase
Unity Editor plugin automatically configures your Xcode project to upload
symbols. [Download the latest version.](https://firebase.google.com/download/unity)

## Android

For Android apps, the Crashlytics Unity SDK 8.6.1+ automatically includes
NDK crash reporting, which allows Crashlytics to automatically report Unity
[IL2CPP](https://docs.unity3d.com/Manual/IL2CPP.html)
crashes on Android. However, to see symbolicated stack traces for native library
crashes in the Crashlytics dashboard, you must upload symbol
information at build time using the Firebase CLI.

1. Make sure that you're using the Crashlytics Unity SDK v8.6.1 or later.
   [Download the latest version.](https://firebase.google.com/download/unity)

2. Set up your environment and project for symbol uploading:

   1. Follow the instructions to [install the Firebase CLI](https://firebase.google.com/docs/cli.md.txt).

      If you've already installed the CLI, make sure to
      [update to its latest version](https://firebase.google.com/docs/cli.md.txt#update-cli).

      > [!NOTE]
      > **Note:** You can also run Firebase CLI commands in Cloud Shell. [Cloud Shell](https://firebase.google.com/docs/cloud-shell.md.txt) is a browser-based, pre-authenticated command-line environment, accessible from the Firebase console, and comes with the Firebase CLI pre-installed. This makes it a convenient option for getting started quickly, provided you add your project files to the Cloud Shell environment.

   2. *(only for apps using Android API level 30+)* Update your app's
      `AndroidManifest.xml` template to disable Pointer Tagging:

      1. Check the box for **Android Player Settings \> Publishing Settings \>
         Build \> Custom Main Manifest**.

      2. Open the manifest template located at
         `Assets/Plugins/Android/AndroidManifest.xml`.

      3. *(only for apps using an SDK version before
         [8.8.0](https://firebase.google.com/support/release-notes/unity.md.txt#crashlytics_7))* Add the
         following attribute to the application tag:
         `<application android:allowNativeHeapPointerTagging="false" ... />`

3. Build your project and upload symbols.

   Complete these steps each time that you create a release build or any build
   for which you want to see symbolicated stack traces in the
   Crashlytics dashboard.
   1. From the *Build Settings* dialog, do one of the following:

      - Export to an Android Studio project to build your project; or

      - Build your APK directly from the Unity Editor.  

        Before building, make sure the checkbox for **Create symbols.zip** is
        checked in the *Build Settings* dialog.

   2. Once your build has finished, generate a Crashlytics-compatible symbol
      file and upload it to Firebase servers by running the following
      Firebase CLI command:

      ```
      firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
      ```
      - <var translate="no">FIREBASE_APP_ID</var>: Your Firebase Android App ID (not your
        package name)  

        Example Firebase Android App ID: `1:567383003300:android:17104a2ced0c9b9b`

        <br />

        Need to find your Firebase App ID?

        <br />

        > Here are two ways to find your Firebase App ID:
        > - In your `google-services.json` file, your App ID is the
        >   `mobilesdk_app_id` value; or
        >
        > - In the Firebase console, go to the
        >   **Settings** \>
        >   [**General** page](https://console.firebase.google.com/project/_/settings/general/).
        >   Scroll to the **Your apps** card, then click the intended
        >   Firebase App to find its App ID.

        <br />

        <br />

      - <var translate="no">PATH/TO/SYMBOLS</var>: The path to the symbol file generated by the
        CLI

        - Exported to an Android Studio project ---
          <var translate="no">PATH/TO/SYMBOLS</var> is the `unityLibrary/symbols` directory,
          which is created in the exported project root after you build the app
          via Gradle or Android Studio.

        - Built the APK directly from within Unity ---
          <var translate="no">PATH/TO/SYMBOLS</var> is the path of the zipped symbol file
          generated in the project root directory when your build finished
          (for example:
          `myproject/myapp-1.0-v100.symbols.zip`).

      View advanced options for using the
      Firebase CLI command for symbol file generation and upload

      | **Flag** | **Description** |
      |---|---|
      | `--generator=csym` | Uses the legacy cSYM symbol file generator instead of the default Breakpad generator Not recommended for use. We recommend using the default Breakpad symbol file generator. |
      | `--generator=breakpad` | Uses the Breakpad symbol file generator Note that the default for symbol file generation is Breakpad. Only use this flag if you've added `symbolGenerator { csym() }` in your build configuration and you want to override it to use Breakpad instead. |
      | `--dry-run` | Generates the symbol files but does not upload them This flag is useful if you want to inspect the content of the files that are sent. |
      | `--debug` | Provides additional debugging information |