You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行时初始化Firebase后Analytics logEvents上报失效问题求解

问题原因

你遇到的报错是因为Firebase Analytics默认会在应用启动阶段自动初始化,此时会优先读取res/values目录下由com.google.gms.google-services插件自动生成的配置资源,你移除了google-services.json并关闭了gms插件,没有生成对应的资源文件,就触发了缺失google_app_id的报错。

解决方案

步骤1:关闭Analytics自动初始化

在你的AndroidManifest.xml的<application>节点下添加以下meta-data配置,禁止Analytics提前自动初始化:

<!-- 禁用Firebase Analytics自动初始化 -->
<meta-data
    android:name="firebase_analytics_collection_deactivated"
    android:value="true" />
<!-- 禁用应用测量自动初始化 -->
<meta-data
    android:name="google_analytics_adid_collection_enabled"
    android:value="false" />

步骤2:按业务需要动态初始化多套Firebase实例

不要两个项目都使用[DEFAULT]作为实例名,避免冲突,为两个Firebase项目配置不同的实例名,在用户选择对应登录方式后再初始化对应项目:

// 项目1配置示例,参数从对应项目的google-services.json提取
val project1Options = FirebaseOptions.Builder()
    .setApplicationId("项目1的mobilesdk_app_id")
    .setApiKey("项目1的current_key")
    .setDatabaseUrl("项目1的firebase_url")
    .setGcmSenderId("项目1的project_number")
    .setStorageBucket("项目1的storage_bucket")
    .setProjectId("项目1的project_id")
    .build()
// 初始化项目1实例,指定唯一实例名
FirebaseApp.initializeApp(context, project1Options, "FIREBASE_PROJECT_1")

// 项目2配置同理
val project2Options = FirebaseOptions.Builder()
    .setApplicationId("项目2的mobilesdk_app_id")
    .setApiKey("项目2的current_key")
    .setDatabaseUrl("项目2的firebase_url")
    .setGcmSenderId("项目2的project_number")
    .setStorageBucket("项目2的storage_bucket")
    .setProjectId("项目2的project_id")
    .build()
FirebaseApp.initializeApp(context, project2Options, "FIREBASE_PROJECT_2")

步骤3:手动初始化对应项目的Analytics并开启采集

初始化完对应Firebase实例后,再获取对应实例的Analytics对象,开启数据采集即可正常上报事件:

// 比如用户选择了登录方式1,获取项目1的Analytics实例
val targetApp = FirebaseApp.getInstance("FIREBASE_PROJECT_1")
val analytics = FirebaseAnalytics.getInstance(targetApp)
// 开启数据采集
analytics.setAnalyticsCollectionEnabled(true)

// 上报事件正常调用即可
val bundle = Bundle()
bundle.putString("test_param", "test_value")
analytics.logEvent("test_event", bundle)
注意事项
  • 不要恢复apply plugin: 'com.google.gms.google-services'配置,也不要放回google-services.json文件,避免插件自动生成的资源和手动配置冲突
  • 确保Firebase实例初始化完成后,再获取Analytics对象上报事件
  • 如果需要切换上报的项目,直接获取对应实例的Analytics对象上报即可,无需重复初始化FirebaseApp

内容的提问来源于stack exchange,提问作者Pascal Okyere Adomako

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:54:04