🐩
【Flutter】Google Analytics Androidのデータがうまく流れていない
GoRouterのObserverに設定していたが
画面遷移の情報をGoogle Analyticsに流しています
GoRouter router(Ref ref) {
...省略
return GoRouter(
...省略
observers: [
FirebaseAnalyticsObserver(
analytics: FirebaseAnalytics.instance,
nameExtractor: (settings) {
return settings.name ?? 'unknown';
},
),
],
...省略
);
}
この状態で、
- iOSはデータが流れてきている
- Androidは流れてきていない
という状況です。
Androidデバッグ起動時のログ
firebaseでログを絞った結果
I/FA ( 5714): adb shell setprop debug.firebase.analytics.app com.xxx.yyy.dev
E/FA ( 5714): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
I/FirebaseApp( 5714): Device unlocked: initializing all Firebase APIs for app [DEFAULT]
I/FirebaseCrashlytics( 5714): Initializing Firebase Crashlytics 19.4.0 for com.xxx.yyy.dev
D/FirebaseSessions( 5714): Initializing Firebase Sessions SDK.
I/FirebaseCrashlytics( 5714): No version control information found
E/FA ( 5714): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
E/FA ( 5714): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
E/FA ( 5714): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
E/FA ( 5714): Missing google_app_id. Firebase Analytics disabled. See https://goo.gl/NAOOOI
うん、しっかりログに出てました。
Firebase Analytics が無効になっとった。
Missing google_app_id. Firebase Analytics disabled.
おそらく、google-services.json
周りの設定がうまくいってなさそう?
ログにもここ見てくれとリンクがある
google-services.json 周りの設定確認してみる
google-services.jsonの中身に問題ないか確認
特に問題なかった。
最新のダウンロードして置き換えてみたけど、同じエラーが出た。
ログにあったリンクを確認してみた
以下の部分のみ設定が足りていなかった。
dependencies {
// Import the Firebase BoM
implementation(platform("com.google.firebase:firebase-bom:33.15.0"))
// When using the BoM, you don't specify versions in Firebase library dependencies
// Add the dependency for the Firebase SDK for Google Analytics
implementation("com.google.firebase:firebase-analytics")
}
これだけではだめでした...
しかし必要な設定みたいなのでこの修正は残しておきましょう。
救いのStack Overflow
これで解決しました!
以下のファイルを修正しました。
android/settings.gradle
android/build.gradleのgoogle-services
のバージョンが異なっていましたので、合わせてみました。
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.8.0" apply false
id "org.jetbrains.kotlin.android" version "2.1.10" apply false
- id 'com.google.gms.google-services' version '4.3.15' apply false
+ id 'com.google.gms.google-services' version '4.4.2' apply false
+ id "com.google.firebase.crashlytics" version "2.9.9" apply false // オマケでつけた
}
なんで同じような記法が複数箇所あるんだ...
chatGPTに聞いたところ
-
build.gradle
のbuildscript.dependencies
に書いてるclasspath
を削除 -
settings.gradle
側のplugins
で統一して管理する
と返ってきました。
怖いので一旦そのままにしました。
Firebase Debug Viewでデータ流れてるか確認
Androidにて、デバッグ中にDebug Viewにデータを流すには、以下のコマンドを打っておく必要があります。
adb shell setprop debug.firebase.analytics.app PACKAGE_NAME
データきました!!
確認終わったら以下を実行
adb shell setprop debug.firebase.analytics.app .none.
参考
Discussion