Flutter项目安卓端Firebase Analytics无法触发问题求助
问题核心
新Flutter项目通过flutterfire configure配置Firebase后,iOS端Analytics运行正常,但安卓端7天未触发任何事件,仅报错:
E/FA (15604): Missing google_app_id. Firebase Analytics disabled.
See ####
同时集成的Crashlytics在两端均正常工作,已尝试手动添加google-services.json、在strings.xml中配置google_app_id、手动修改build.gradle、升级flutterfire至0.2.7版本,问题仍未解决。
针对性解决方案
1. 确认google-services.json的位置与正确性
- 必须将文件放在
<project>/android/app/目录下(而非项目根目录) - 核对文件内
mobilesdk_app_id与Firebase控制台中安卓应用的App ID完全一致 - 检查
.gitignore规则,确保文件未被排除在构建流程外
2. 调整Google Services插件的加载顺序
在<project>/app/build.gradle中,com.google.gms.google-services插件必须放在最后加载,否则会导致google_app_id无法正确注入:
plugins { id "com.android.application" id "kotlin-android" id "dev.flutter.flutter-gradle-plugin" id 'com.google.gms.google-services' // 移至插件列表末尾 }
3. 规范Analytics初始化代码
确保在main函数中完成Firebase核心初始化,并手动触发测试事件验证:
import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); final analytics = FirebaseAnalytics.instance; // 触发测试事件,用于验证上报是否正常 await analytics.logEvent(name: 'android_analytics_test'); runApp(const MyApp()); }
同时确认代码中未调用setAnalyticsCollectionEnabled(false)禁用数据收集。
4. 清理构建缓存并重新构建
执行以下命令彻底清理缓存,避免旧配置残留:
flutter clean cd android && ./gradlew clean cd .. && flutter build apk
5. 检查安卓Manifest权限配置
确保AndroidManifest.xml中添加了Analytics必需的权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
注意:无需手动在strings.xml中添加google_app_id,Google Services插件会自动注入,手动添加可能导致冲突。
6. 验证Firebase控制台应用配置
- 确认控制台中安卓应用的包名,与项目
android/app/build.gradle内的applicationId完全匹配 - 检查控制台中该应用的Analytics服务是否处于启用状态(默认启用)
补充说明
由于Crashlytics两端正常,说明Firebase核心配置已连通,问题大概率出在Analytics的配置注入或初始化环节。优先排查插件加载顺序、google-services.json位置这两个高频出错点,再逐步验证其他配置。
内容的提问来源于stack exchange,提问作者SwamiJi

