【问题标题】:Setting up Firebase for debug and release with a dev and release database使用开发和发布数据库设置 Firebase 以进行调试和发布
【发布时间】:2018-05-10 02:35:33
【问题描述】:

我有两种构建类型 - debugrelease - 以及两种风格,devprod

区别很简单:debug 是可调试的二进制文件,release 已优化,已删除调试代码和 Proguard。

dev 用于连接开发 Firebase 项目,prod 用于实际生产数据库。

有时我想在 prod 数据库中使用debug,所以我有所有四种可能的组合。问题是 Firebase 中的项目设置需要二进制签名密钥的 SHA1 指纹,而创建可调试应用程序将始终使用调试密钥。

我不能在两个 Firebase 项目上拥有相同的密钥,因此在开发 Firebase 项目上拥有调试签名密钥意味着我不能在 prod 项目上也拥有它,所以我不能使用“prodDebug”设置(即带有可调试二进制文件的 prod 数据库)。

解决这个问题的正确方法是什么?

【问题讨论】:

  • 这篇文章对这种情况有帮助吗? medium.com/@Miqubel/…
  • @TRIENTRAN 这就是我需要的!如果您想要 25 次重复,您是否想为此创建一个答案并总结文章的要点(即使用单独的应用程序 ID)?如果没有,没问题,我也可以。
  • 非常感谢您提供 EboMike。我很感激,但弗朗西斯科·德丁·加西亚比我快。那就等他更新答案吧。如果问你,如果我们是刚毕业,只有几个月的实习期,而雇主正在寻找非常有经验的候选人,我们如何找到工作?
  • @TRIENTRAN Google 正在招聘应届毕业生,他们也有高薪实习。当然,你需要通过面试,这并不容易。我只能给你我的标准建议——投入尽可能多的空闲时间来编写代码、试验、查看其他人的代码等……你编程越自在,面试的机会就越大。
  • 非常感谢您的建议。那我会努力的。

标签: android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

在 Fazan Cheng 的评论中发布的 Medium article(通过 Wayback Machine 链接)中概述了设置中缺少的元素。

Firebase 不允许相同的 SHA1 密钥用于相同的应用 ID。这意味着我们可以通过修改每种风格的应用程序 ID 来解决这个问题。

具体来说,这可以使用applicationIdSuffix 来完成,它将一个字符串添加到应用程序ID。例如:

productFlavors {
    dev {
        applicationIdSuffix '.dev'
        versionNameSuffix "-dev"
        dimension 'env'
    }
    prod {
        versionNameSuffix "-prod"
        dimension 'env'
    }
}

如果您的应用程序 ID 为 com.foo.myapplication,则开发风格的 ID 为 com.foo.myapplication.dev。您现在可以使用这个新 ID 生成一个单独的 Firebase 项目并重复使用相同的 SHA1 密钥。

【讨论】:

  • 此 Medium 文章链接不再可用。
  • @LucianoBrum 谢谢!幸运的是,它仍在网络档案中。我要更新链接。
【解决方案2】:

您需要有两个不同的 Firebase 项目,其中包含两个不同的 google.services.json 文件。它们都可以具有与项目关联的相同SHA 键。要使其正常工作,您需要将每个文件放在项目的正确文件夹中。

app/src/
    release/google-services.json
    debug/google-services.json

这样,当您编译项目时,取决于它是发布版本还是调试版本,您将针对一个数据库或另一个数据库编译项目。如果您想使用自定义风味,您也可以这样做,将 relase 和 debug 更改为风味名称:

app/src/
    flavor1/google-services.json
    flavor2/google-services.json
    flavor3/google-services.json

如果您想了解有关此插件如何工作的更多详细信息,请查看:https://github.com/googlesamples/google-services/issues/54#issuecomment-165824720

希望对你有帮助!

编码愉快!

【讨论】:

  • 您的答案缺少关键部分(我之前已经设置了双 json) - 您需要不同的应用程序 ID,否则它们不能具有相同的 SHA 密钥。使用applicationIdSuffix 是最简单的方法。我会接受你的回答,但你应该先添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 2014-10-18
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多