如何让多个不同包名的白标应用共用同一Firebase应用配置?
多包/Bundle ID共用同一Firebase应用的实现方案
Android 操作步骤
- 打开Firebase控制台,进入目标应用的项目设置 → 应用页面。
- 找到当前Android应用的包名,点击「添加包名」(部分控制台版本显示为「添加指纹/包名」),将所有白标实例的包名逐一添加。
- 重新下载
google-services.json,新文件会包含所有已添加包名的对应配置节点。 - 若不想每次加新包都重新下载,可手动编辑
google-services.json:复制现有client节点,保持mobilesdk_app_id不变,仅修改client_info和oauth_client里的package_name为新白标包名即可。 - 构建白标变体时,确保动态替换的包名和配置文件里的对应条目一致,避免包名校验失败。
iOS 操作步骤
- 同样在Firebase控制台的目标应用项目设置里,找到iOS应用的Bundle ID,点击添加新的Bundle ID,将所有白标实例的ID加入。
- 重新下载
GoogleService-Info.plist,该文件会关联所有已添加的Bundle ID。 - 也可手动调整plist:保持
GOOGLE_APP_ID不变(这是Firebase应用的唯一标识),在Xcode构建设置里用自定义变量动态替换BUNDLE_ID的值,匹配当前白标变体的ID。
核心注意点
- 所有白标实例必须共用同一个Firebase应用ID(Android的
mobilesdk_app_id、iOS的GOOGLE_APP_ID),这是Firebase将它们视为同一应用的关键。 - Analytics、Crashlytics、Performance Monitoring的数据会自动汇总到同一个Firebase应用下,无需额外配置。
- Cloud Messaging可为每个包/Bundle ID单独上传推送证书,在Firebase控制台的Cloud Messaging设置里操作即可,同一个应用能处理多个实例的推送需求。
- 构建时务必保证变体的包/Bundle ID和配置文件里的对应条目匹配,否则会触发包名校验失败的构建错误。
内容的提问来源于stack exchange,提问作者Brett
相关产品推荐
相关产品推荐

