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

构建时无Firebase密钥,代码初始化后Analytics失效需额外配置吗?

问题描述

我仅将Firebase用于Crashlytics。由于Android应用需从构建时无法获取的属性中读取Firebase密钥,因此未使用默认JSON配置文件,而是在Application的onCreate()中执行以下代码进行初始化:

val builder = FirebaseOptions.Builder()
            .setProjectId(firebaseProjectId)
            .setApplicationId(applicationId)
            .setApiKey(firebaseKey)
FirebaseApp.initializeApp(context, builder.build())

该修改完成数月后,我发现Firebase Analytics自版本发布后便停止工作。我仍能收到Crashlytics的崩溃报告,但自动采集的其他数据(如活跃用户、唯一用户、分析事件等)全部丢失。这导致Crashlytics的数据质量极差,因为它只能将仍使用旧版本应用的用户视为唯一用户。

请问在此方案下,Firebase Analytics正常运行是否需要额外配置?


解决方案

手动初始化Firebase时,要让Firebase Analytics正常运行,必须额外配置FCM发送者ID(原GCM发送者ID)。

Crashlytics仅依赖你已配置的Project ID、Application ID和API Key,所以能正常接收崩溃报告;但Analytics(包括Crashlytics用来识别唯一用户的底层逻辑)需要FCM发送者ID生成并维护用户唯一标识,缺少这个配置会导致Analytics自动采集功能完全失效,进而出现活跃用户、事件数据丢失,Crashlytics用户统计失真的问题。

修改初始化代码,添加setGcmSenderId()方法即可:

val builder = FirebaseOptions.Builder()
            .setProjectId(firebaseProjectId)
            .setApplicationId(applicationId)
            .setApiKey(firebaseKey)
            .setGcmSenderId(firebaseFcmSenderId) // 新增该行,传入FCM发送者ID
FirebaseApp.initializeApp(context, builder.build())

FCM发送者ID可在Firebase控制台的项目设置中获取,将其与其他Firebase参数一同从你的动态属性源读取即可。

此外,确保Firebase相关依赖库版本为最新,且未在代码中手动禁用Analytics的自动采集功能,避免其他潜在问题。


内容的提问来源于stack exchange,提问作者htafoya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:24:28