【问题标题】:How do I set up multiple Firebase projects with the same bundle ID on Android?如何在 Android 上设置多个具有相同捆绑 ID 的 Firebase 项目?
【发布时间】:2021-07-02 17:14:02
【问题描述】:

我正在开发一个使用 Firebase 来实现一些不同功能的 Android 应用。我目前正在尝试从单个 Firebase 项目扩展到 3 个来代表开发、暂存和生产环境。

由于我正在使用的另一个工具 (RevenueCat) 的限制,我的所有项目都需要使用相同的包 ID。我注意到这个设置是,即使使用不同的 google-services.json 文件,我总是指向我原来的生产 Firebase 项目。

我四处搜索并看到了一些关于需要在 Android 上添加 SHA-1 值以区分应用程序的内容。我尝试将 SHA-1 从 Google Play 控制台中的应用程序签名密钥证书添加到生产项目,并将 SHA-1 从 ./gradlew signingReport 输出添加到暂存项目。不幸的是,仍然没有骰子。

有没有人有这种设置的经验或任何其他想法可以尝试?非常感谢!

【问题讨论】:

  • 你能解释一下为什么你需要对 debug/uat/prod 使用完全相同的包 ID,我没有使用 RevenueCat 的经验,但是有什么限制。
  • 是的,当然。 RevenueCat 主要充当 Android/iOS 上的原生支付和应用程序代码之间的抽象层。但是,您的应用内购买设置方式全部在本地商店中,并且商店要求您为您的应用指定单个捆绑 ID(据我所知)。例如,我无法在 Google Play 控制台上将我的捆绑包 ID 指定为 com.example.app / com.example.app.dev / com.example.staging
  • 您为什么不在 RevenueCat 中也制作三个应用程序?那么 Firebase + RevenueCat 中的每个环境都有一个应用程序吗?
  • 不幸的是,事实的来源是 App Store/Google Play Store。所以我很确定这将涉及在每个应用程序中创建 3 个单独的应用程序,我觉得肯定有比这更好的解决方案。

标签: android firebase


【解决方案1】:

在一个项目中拥有多个具有相同 bundleId/packageName 的不同应用是不可能的。不过,您可以将一个google-services.json 用于多个应用程序 - 您只需将多个应用程序添加到您的项目中。不过,这些应用的 packageName/bundleId 应该不同。

对于您的情况来说,这很常见 - 将应用程序拆分为多种风格以获得 appId 后缀。例如com.example.app.prodcom.example.app.stagecom.example.app.dev - 后缀可以在gradle.build 中为每个风味配置。问题是您必须在 firebase 项目中拥有不同的应用程序,或者为每种风格提供不同的项目——这取决于您的需要。例如,当应用是同一个项目的一部分时,它们将共享身份验证和数据库存储,但会有单独的崩溃等。不同的项目会有不同的一切。

SHA-1 有点不同 - 它旨在根据签名证书限制/启用/禁用 API 的使用。同一个包名可能有多个 SHA-1。此外,SHA-1 仅适用于 Android 应用。

您可以做的是创建多个项目 - 为每种风格创建一个项目,并在每个项目中以相同的包名称注册应用程序 - 您可以做到!每种风味都必须在相应的文件夹中有自己的google-services.json 文件。

它适用于不同的包名称。

我从未尝试过使用相同包名的这种方法,而且我不知道可能存在的缺点,所以我假设您可能会遇到一些问题。或者不。

【讨论】:

  • 感谢您的回复。实际上,我之前实际上遵循了您列出的结构:每种风味的不同 ID(com.example.app.prodcom.example.app.stagecom.example.app.dev)以及每个风味的单独 Firebase 项目。我有一个系统可以在构建时使用正确的google-services.json。问题实际上只是将其调整为单个应用程序 ID。无论我使用哪个 google-services.json,我的 Android 应用现在总是指向同一个 Firebase 项目。
【解决方案2】:

在这种情况下,事实证明我只需要清除 app/build 文件夹。显然 Firebase 配置在构建之间以某种方式“缓存”,因此清除它会强制它使用新配置。

我刚刚将它添加为构建过程中的一个步骤。在这个小改动之后,一切都按预期进行。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-11-29
      • 2017-04-19
      • 1970-01-01
      • 2017-11-27
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      相关资源
      最近更新 更多