Open1

【Google I/O 2023】What's new in Firebase Crashlytics

watabeewatabee

What's new in Firebase Crashlytics

https://www.youtube.com/watch?v=UmAFhPeCNF4&list=PLOU2XLYxmsIIwZQkAPhJZg8jaNrrHk1DH&index=65

Finding Crashes (2:24~)

  • 昨年の Google I/O で Android Studio の App Quality Insights との統合を発表
    • Android Studio からクラッシュレポートを見ることができ、スタックトレースをクリックして該当のコードに飛ぶことができる
  • Android Studio Flamingo の安定板に以下の変更が入っている
    • Play Tracks Filtering
      • Play Store の Production, Open, Closed, Internal のタイプでフィルタリングができる
    • Signals Filtering
      • Crashlytics の Signals でフィルタリングができる
        • Signals には Repetitive, Fresh, Early, Regressed などが存在
    • Notes
      • クラッシュに対してメモが追加でき、チームと共有できる
    • Closing an issue
      • Close ボタンが配置されており、クラッシュを修正したら Android Studio からクローズすることができる

C++ memory bugs (3:54~)

  • メモリに関する問題に対処するため、Crashlytics は GWP-ASan をサポート
    • GWP-ASan は解放後の使用やバッファオーバーフローなどのメモリに関するバグを検出、修正するのに役立つツール
  • GWP-ASan を有効にした状態だと Crashlytics は GWP-ASan のクラッシュレポートが表示されるようになる
    • Issue signal の絞り込みで GWP-ASan report を指定することができる
    • レポートの詳細でメモリのスタックトレースを表示してくれる

設定は AndroidManifest で行う。

AndroidManifest.xml
<application android:gwpAsanMode="always">
    ...
</application>    

Improved Stack traces (5:42~)

  • Crashlytics はスタックトレースの質の向上を継続して行なっている
  • ネイティブのアプリについては改善を行い、ネイティブのスタックトレースはより詳細になって正確なファイルと行番号を検索できる
  • ネイティブコードを持つスレッドを含む ANR は完全にシンボル化されるようになった
  • Unity のアプリではラムダやジェネリクス、ローカル関数や型などの変換を追加することにより、IL2CPP のフレームをより意味のあるものにした
  • Swift や Kotlin といった言語ではコンパイラが追加のフレームを生成するため、スタックトレースを辿って問題の根本を得るのが難しい
    • このようなケースに対処するため、シンボリケーションエンジンを改善
  • これらの改善は、最新の Crashlytics SDK と Gradle プラグインを使う必要がある

Similar stack traces (7:14~)

  • アプリで似たような状態でクラッシュが発生した場合、ほぼ同じ状態のスタックトレースが生成される
    • 似たようなスタックトレースのクラッシュをグループ化して、Isssue にする
    • スタックトレースが似ていてかつクラッシュの箇所が同じクラッシュのグループは、さらにサブグループ化され、これをバリアントと呼ぶ

Improved grouping algorithm (9:10~)

  • グループ化のアルゴリズムを改善

Jump to blamed commit (9:59~)

  • Android Studio の App Quality Insights でスタックトレースから、対象のコードのクラッシュが発生するようになったコミットまで飛ぶことができる
    • Android Studio Hedgehog でサポート