【问题标题】:SHA certificate firebase Debug/ReleaseSHA 证书 firebase 调试/发布
【发布时间】:2018-05-01 00:51:28
【问题描述】:

我的 android 应用正在使用 firebase 实时数据库, 我已经放置了应用程序调试 SHA 证书指纹,当我使用调试模式测试我的应用程序时它可以工作并且我从 DB 获取数据,现在当我想要签署和发布应用程序时,“我对以前的应用程序所做的:我从firebase项目控制台中删除了调试SHA证书指纹,然后我放了发布SHA证书指纹,应用程序现在已经上市了,没关系” 但我想知道:

Q1)当我删除带有发行版的调试 SHA 证书指纹时,当我在调试模式下运行我的应用程序时它仍然可以工作吗?

Q2) 我应该在 Firebase 控制台中调试和发布 SHA 证书指纹吗?

Q3) 如果我将调试和发布 SHA 证书指纹放入 firebase 控制台,然后下载从 firebase 提供的新配置文件,我的数据库连接仍然可以在发布和调试模式下工作?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    在阅读了数十个资源和帮助等之后,我发现由于 Google 不断需要不断更改方法和 UI,答案很快就会过时。而且 Google 本身在展示实现某事的一种简单方法方面做得很差,而不是多种替代方法,这最终只会增加混乱。

    不仅数据库需要证书(正如 OP 所要求的那样),而且谷歌登录等也需要证书。

    因此,对于所有此类情况,以下是截至 2021 年 12 月的当前步骤:

    1. 首先使用各种方法从 Android Studio 生成调试密钥。这里列出了 2 个:https://developers.google.com/android/guides/client-auth - 通过 keytool 和 Gradle 签名报告。我发现 Gradle 签名报告很容易用于获取 SHA1 密钥。

    1. 第一次设置应用程序时将此调试密钥添加到 Firebase 控制台。否则在现有应用设置下输入此密钥:Firebase | |项目设置 |您的应用 |安卓应用 | SDK 设置和配置 |添加指纹。

    1. 下载 google services json 并将其插入 Android Studio。在模拟器中测试您的应用程序(调试版本),它应该可以正常工作,因为已在 Firebase 和 google 服务 json 中设置了调试密钥。

    2. 现在用于生产应用,即发布版本 - 在 Google Play 管理中心创建(或定位)您的发布者帐户。创建(或定位)应用程序并将其设置为 Google Play 签名,这是自 2021 年 8 月以来的默认设置。设置 |应用完整性 | Play 应用签名 |应用签名密钥证书 - 复制“SHA-1 证书指纹”。

    1. 使用“添加指纹”将密钥添加到在同一应用下的 Firebase 控制台。 再次下载 google services json 并将其插入 Android Studio。在模拟器中测试您的应用调试版本,它应该可以继续正常工作。

    2. 生成一个 release APK 并在本地设备等上进行测试 - 这也应该可以正常工作。如果这是该应用第一次在 Play 商店发布,那么我建议先在“内部测试”轨道下发布,以便在多个设备上进行实时测试。

    【讨论】:

      【解决方案2】:

      您必须在 firebase 控制台中为 DebugRelease 创建两个单独的项目。

      • 将各自的 SHA 密钥放入这些项目中。
      • 您有两个不同的google-services.json 文件。

      现在您必须在应用程序build.gradle 文件中创建两个bulidType。 例如。

      buildType{
          release{
         //define your keys here 
          }
          
          debug{
         //define your keys here 
         
          }
      
      }
      

      在项目 src 中创建两个文件夹,名为 debugrelease

      project-->src-->create folder debug and release 
      

      将您的 google-services.json 文件放入相应的文件夹中

      Gradle 将根据构建类型自动选择您的帐户。

      【讨论】:

      • 我应该在 firebase 控制台中复制项目吗?没有其他解决方案吗?
      • 它不重复。为开发和发布维护独立项目是一种很好的做法
      • 当我尝试将调试密钥放入 firebase 时,它​​显示“您的操作已被禁止”。有什么想法吗?
      • 能分享一下日志吗
      【解决方案3】:

      这里是您问题的答案。

      1. 只有当您仍然拥有用于调试模式的debug SHA certificate fingerprint 时,它才会起作用。否则,它将不起作用。
      2. 是的,您应该在 Firebase 控制台中输入 debugrelease SHA 证书指纹。
      3. 确实如此,如果您将 debugrelease SHA 证书指纹放入 Firebase 控制台,并且如果您再次下载 google-services.json 文件并将其放在项目中的正确位置,您的数据库连接仍然会在发布和调试模式下工作。

      【讨论】:

      • 所以如果我要在 Firebase 控制台中添加调试和发布 SHA 证书指纹,我只需下载一个 google-services.json 并将其放入 app 文件夹中,不需要其他配置吗? buildType 没有变化?
      • 是的,这是正确的,当您想要启动发布变体时,您只需将 Build Variant 从 debug 更改为 release 。
      • 您知道 firebase 如何在 Firebase 控制台中的两个 SHA 证书指纹之间进行选择,因为它们在同一个 google-services.json 文件中,我们没有指定哪个用于调试和发布哪一个?
      • 但不是 Firebase 正在选择。当您使用调试模式时,这意味着只有您可以使用它。 Google Play 商店需要发布版本。这意味着您告诉 Google Play 商店您不再处于调试模式,并且您希望该应用程序是公开的。它不再只是用于调试目的。
      • 如果您打算使用内部应用共享,则需要第四个密钥:stackoverflow.com/a/62763633/1702810
      猜你喜欢
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2016-10-04
      • 1970-01-01
      • 2014-08-16
      • 2020-09-23
      相关资源
      最近更新 更多