FirebasePerformanceMonitoring is 何?
- ライブラリ導入するだけで、アプリ実行中のパフォーマンスがわかる
- ボトルネックになっている通信などをコンソール上で確認できる
- 導入は簡単だけど注意点あり(下記参照)
導入方法
Firebaseプロジェクトの準備
- コンソール上でプロジェクト作成する

- プロジェクトの設定から構成ファイルをダウンロードする

-
google-services.json
をapp配下に置く -
プロジェクトのGradleファイル
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.1.0'
}
}
allprojects {
repositories {
google()
}
}
- アプリのGradleファイル
-
apply plugin: 'com.google.gms.google-services'
はファイル一番下に書かないとちゃんと動かない(失敗あるある)
-
apply plugin: 'com.android.application'
dependencies {
implementation 'com.google.firebase:firebase-core:16.0.4'
}
// ファイルの一番下に記載する
apply plugin: 'com.google.gms.google-services'
Performance Monitoringを追加
- プロジェクトのGradleファイル
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.google.firebase:firebase-plugins:1.1.5'
}
}
- アプリのGradleファイル
apply plugin: 'com.android.application' // ←の下に書く
apply plugin: 'com.google.firebase.firebase-perf'
dependencies {
implementation 'com.google.firebase:firebase-perf:16.2.1'
}
ここまでやってビルドすると、Firebaseのコンソールから情報を確認できるようになります。楽勝ですね!
で、本題(?)はここから
- ふと、妙にアプリのビルドが遅いことに気づく
- AndroidStudioのアップデートあたりが原因だろうと思っていたが、ボトルネックを調べたら原因が判明
- コマンド :
./gradlew --profile --recompile-scripts --offline --rerun-tasks assembleDebug
- なんかめっちゃ時間かかってる・・・(画像はサンプルプロジェクトで、実際のプロダクトで測定したら1分近く長くなっていた)
- コマンド :
- 対処法がないか調べたところ、一件だけ見つけることができた
- 僕の理解では、開発中にライブラリを除外して気にしないようにするような感じ
- 素のままで使っている場合は良いけど、カスタムトレースなどやってる場合はどうすればいいか不明
まとめ
- FirebasePerformanceMonitoringを導入した
- 導入結果をコンソール上で確認し、ボトルネックとなる処理の情報を得ることができた
- 引き換えに、それなりのビルド時間を奪われた
解決法ご存知の方コメントいただけると嬉しいです