如何在Android上使用相同的Bundle ID设置多个Firebase项目?

5
我正在开发一款使用Firebase实现多种功能的Android应用。我目前正尝试从单个Firebase项目扩展到3个,分别代表开发、暂存和生产环境。
所有我的项目都需要使用相同的包标识符,因为我使用的另一个工具(RevenueCat)有限制。我在这种设置中注意到的是,即使使用不同的google-services.json文件,我仍然总是指向我的原始产品Firebase项目。
我已经搜索过并看到了一些关于Android上需要添加SHA-1值来区分应用程序的内容。我尝试将Google Play控制台中应用签名密钥证书中的SHA-1添加到生产项目中,以及将输出./gradlew signingReport的SHA-1添加到暂存项目中。不幸的是,仍然没有用。
有没有人有这种设置方面的经验或者其他想法可以尝试?非常感谢!

1
你能解释一下为什么需要在Debug/UAT/Prod中使用完全相同的捆绑标识符吗?我对RevenueCat没有任何经验,但是有什么限制吗? - Du.Fantasy
1
当然。RevenueCat主要作为Android/iOS本地支付和应用程序代码之间的抽象层。但是,您的应用内购买设置方式都在本地商店上,并且商店要求您指定应用程序的单个捆绑标识符(据我所知)。例如,我无法在Google Play控制台上将我的捆绑标识符指定为com.example.app / com.example.app.dev / com.example.staging - Logan Patiño
为什么不在RevenueCat中也制作三个应用程序呢?这样每个环境都有Firebase + RevenueCat的应用程序? - enc_life
不幸的是,真相的来源是App Store/Google Play商店。因此,我非常确定这将涉及在每个应用商店创建3个单独的应用程序,而且我觉得肯定有比这更好的解决方案。 - Logan Patiño
3个回答

3
在这种情况下,事实证明我只需要清除app/build文件夹即可。显然,在构建之间Firebase配置以某种方式被“缓存”,因此清除它会强制使用新的配置。
我刚刚将其添加为构建过程中的一步。在这个小改变之后,一切都按预期工作。

两年过去了,我正在努力实现你当时的目标。感谢你提出并回答了自己的问题。你能澄清两件事吗?
  1. 你在最终解决方案中是否使用了SHA-1技术?
  2. 清除app/build后,构建是否继续有效以获得正确的Firebase目标?
非常感谢,如果你看到这条消息的话。
- undefined

1
在一个项目中使用相同的bundleId/packageName来拥有几个不同的应用程序是不可能的。但你可以使用一个google-services.json文件来为多个应用程序提供服务,只需将多个应用程序添加到您的项目中。这些应用程序的packageName/bundleId应该是不同的。
对于你的情况,将应用程序分割成几个版本通常会有一个appId后缀,例如com.example.app.prodcom.example.app.stagecom.example.app.dev - 每个版本的gradle.build都可以配置后缀。问题是你必须在firebase项目中拥有不同的应用程序或不同的项目来满足你的需求。例如,当应用程序是同一项目的一部分时,它们将共享身份验证和数据库存储,但将拥有单独的crashlitycs等。而不同的项目将完全不同。
SHA-1略有不同 - 它旨在根据签名证书限制/启用/禁用API的使用。对于相同的包名称可能会有几个SHA-1。此外,SHA-1仅适用于Android应用程序。
你可以创建几个项目 - 每个口味一个,然后在每个项目中使用相同的包名注册应用程序 - 你是可以做到的!每个口味都必须在适当的文件夹中拥有自己的google-services.json文件。这种方法对于不同的包名非常有效。
我从未尝试过使用相同的包名进行此操作,也不知道可能存在的缺点,因此我认为您可能会遇到一些问题。或者没有。

1
谢谢回复。实际上,我之前就按照你所提供的结构进行了操作:每种不同口味都有不同的ID(例如com.example.app.prodcom.example.app.stagecom.example.app.dev),并且每个ID都有一个单独的Firebase项目。我有一个系统来在构建时使用正确的google-services.json。问题实际上只是将其适应单个应用程序ID。现在,无论我使用哪个google-services.json文件,我的Android应用程序始终指向同一个Firebase项目。 - Logan Patiño

0
在大多数情况下,使用google-services.json进行简单配置就足以在您的应用程序中拥有不同的Firebase环境。但正如我们所看到的,事情很快就会变得复杂,并且根据要求可能需要自定义配置和初始化Firebase服务的方式。在本文中,我试图总结实现此目标的不同方法并分享我的个人经验。我希望这对您有所帮助,并且您喜欢它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接