Android Studio Electric Eelで導入された新機能「App Quality Insights」を使ってみよう

# はじめに

現在のAndroid Studioのバージョンである「Electric Eel」において、**Crashlytics**レポートを表示することができる**App Quality Insights**という機能が導入されました。

今回は、Firebaseは導入済みだけれど、**Crashlytics**はまだ使ったことがない開発者の方向けに記事を書きました。

プロジェクトでの**Crashlytics**の導入から、Android Studioで**App Quality Insights**を使ってそのレポート内容を確認する方法までをざっくりとカバーしておりますので、開発の際のご参考にしていただけると幸いです。

:::note warn
Firebase SDK自体の導入については解説しておりませんのでご注意ください。
:::

# Crashlytics for Androidを使うメリット

Crashlytics for Androidを使うことによって、次のレポートを取得することができます。

- クラッシュ
- 致命的でないエラー
- アプリケーションが応答しません（ANR）エラー

# 依存関係を追加する

追加しないといけない依存関係としては、大きく分けると二つ存在します。

- Crashlytics SDK
- Crashlytics Gradle プラグイン

## Crashlytics SDKを追加する

`com.google.firebase:firebase-crashlytics-ktx`と`com.google.firebase:firebase-analytics-ktx`の両方をモジュールの**build.gradle**に追加します。

```gradle
dependencies {
    implementation platform('com.google.firebase:firebase-bom:31.2.0')
    implementation 'com.google.firebase:firebase-crashlytics-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'
}
```

## Crashlytics Gradle プラグイン

次に、ルートディレクトリに存在する**build.gradle**にビルドスクリプトの依存関係として**Crashlytics Gradle プラグイン**を導入します。

```gradle
buildscript {
    ...
    dependencies {
        ...
        classpath 'com.android.tools.build:gradle:7.2.0'
        classpath 'com.google.gms:google-services:4.3.15'
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
    }
}
```

最後にモジュールの**build.gradle**に`com.google.firebase.crashlytics`を追加します。


```gradle
plugins {
    id 'com.google.gms.google-services'
    id 'com.google.firebase.crashlytics'
}
```

# わざとクラッシュを発生させて、最初のクラッシュレポートを送信させる

次に、**MainActivity**の`onCreate()`内で、次のコードを実行させてクラッシュさせます。

```kotlin
throw RuntimeException("Test Crash")
```

アプリを実行させて、次のエラーが発生することを確認します。

```shell
FATAL EXCEPTION: main
  Process: com.takagimeow.myapplication.debug, PID: 8601
  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.takagimeow.myapplication.debug/com.takagimeow.myapplication.ui.MainActivity}: java.lang.RuntimeException: Test Crash
```

そして、Firebase Consoleの**Crashlytics**ページを開いて、**MainActivity**において**Test Carsh**と書かれたクラッシュが記録されていることを確認できれば設定完了です。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/795aadfb-7661-ae8f-085b-d853a4eaa9d9.png)


# Android StudioでGoogle開発者アカウントにログイン

次の順番で、メニューから**App Quality Insights**ウィンドウを開きます。

**View** -> **Tool Windows** -> **App Quality Insights** 

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/08cc352d-f0a2-884c-7e6f-4e1a62caf38e.png)

そして、画面上に表示されている**Login**をクリックします。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/f0194450-aa81-8879-f17b-adbd1584dc9c.png)

許可をクリックします。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/a125bd9c-71e5-d808-5798-3150760dc8cd.png)

**Success!**という画面が表示されたログインに成功です。

これで、Android Studioにて、Firebase Crashlyticsのレポートを表示することができるようになりました。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/154fa8fc-3727-92ee-0413-20cd0a8becce.png)

# App Quality Insightsの機能

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/ee8eb708-99b4-253d-9ff3-5b20fa59844d.png)

**App Quality Insights**ウィンドウ内のリンクをクリックすると、クラッシュに関連するコード内の行にジャンプすることができるようになります。

:::note warn
しかし、現在のコードとビルドした時のコードの内容に乖離がある場合はズレが発生する可能性があるそうなので使用する際は注意が必要です。
:::

## クラッシュアイコン

![Android Studio with Crashlystics.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/e4c32e38-a026-aaaa-b78a-67aa0f996cbc.png)

実は、エディターウィンドウの左側のクラッシュと関連のある行の横にクラッシュアイコンが表示されます。これにより、ひとめでどこでクラッシュが発生したのかも確認できるようになっています。

## Notes機能

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577119/f5ee5aa5-c143-0410-3a9e-c79eb6e947da.png)

右側の**Notes**というタブを開くと、Android Studioからクラッシュレポートに対して、コメントなどを付けることが可能となっています。
これは、Firebase プロジェクトにアクセス可能な他のメンバーも含めたチーム全体に共有することが可能なようです。

## Close機能

**Close**ボタンをクリックして、更新ボタンをクリックするとウィンドウから該当のレポートを非表示にすることができます。もし間違った場合は更新される前に**Undo close**をクリックして元に戻してください。

# 参考にした記事

https://androiddagashi.github.io/issue/260-2023-01-29/

https://medium.com/androiddevelopers/see-crashlytics-issue-reports-directly-in-android-studio-with-app-quality-insights-db0ff27454f0

https://firebase.google.com/docs/crashlytics/get-started?hl=ja&platform=android