将app发布到Play商店后,Firebase数据库无法运行

时间:2017-08-16 19:02:17

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

我有问题。我在android studio中编写了应用程序。将app发布到Play商店后,firebase数据库根本不起作用。我将SHA1键添加到firebase控制台项目设置中,可能出错了什么?

Firebase console screenshot

任何帮助表示感谢。

我从这里拿了SHA1键:

SHA1 key screenshot

5 个答案:

答案 0 :(得分:1)

调试和发布版本有不同的SHA1密钥,您最有可能使用调试SHA1密钥

使用下面的代码生成重新密钥SHA1密钥并将其添加到控制台firebase将起作用

keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

tutorial here

答案 1 :(得分:1)

我找到了解决方案,但它非常奇怪。我存储所有数据enter image description here的类中的变量不是私有的。在我为所有变量添加私有修饰符之后,问题已解决enter image description here

答案 2 :(得分:0)

您会发现该版本APK和调试APK具有不同的SHA1和google services的不同API密钥。因此,您需要在项目设置中的Firebase上添加它们。完成此操作后,您需要重新下载google-services.json文件并将其放在项目的正确位置。使用密钥库创建新版本,并在Google Play商店中发布应用。

希望它有所帮助。

答案 3 :(得分:0)

  

您需要注册自己的 SHA-1 SHA-256 键    RELEASE-APK 与使用=> add finger print选项在Firebase项目设置上的 DEBUG-APK 不同。

调试APK以及如何生成调试-SHA指纹键

    默认情况下,当您使用Android Studio中的 RUN 按钮运行应用程序或构建调试APK 时,会默认生成
  • Debug keystore 。 。
  • 默认情况下,
  • 调试密钥库使用 android 作为密钥库名称和别名名称,以便生成SHA密钥。
  • 默认情况下,调试密钥库的位置为 C:\ Users \ USERNAME \ .android
  • 因此,您只需要打开 CMD 并将其指向C:\Program Files\Java\bin目录,然后使用此命令来生成调试SHA指纹(如果要生成txt文件的密钥,即在 D:目录中,并在一个名为 sha.txt 的文本文件中,将其添加到以下命令的末尾:> D:\sha.txt:
  

keytool-列表-v -keystore〜/ .android / debug.keystore -alias   androiddebugkey -storepass android -keypass android


RELEASE APK和如何生成RELEASE-SHA指纹键

  • 当您使用Android Studio中的Build => Generate signed Apk/Bundle选项生成发行版APK时,就会生成释放密钥库。
  • 首次执行此操作时,系统会要求您创建一个新的密钥库,其中最值得注意的是指定许多详细信息:密钥库路径和名称密码,< strong>别名和密码(用于密钥)。
  • 从上述参数中,我们将需要密钥库路径和名称别名作为命令,以及要求输入的密钥库密码 ,执行命令后。
  • 现在执行以下命令以使上述参数保持可见。
  • (如果要生成txt文件的密钥,即在 D:目录中,并在名为 sha.txt 的文本文件中,请将其添加到下面的命令:> D:\sha.txt:
keytool -list -v -keystore <keystore_path\your_keystore_name> -alias <your_alias_name>

答案 4 :(得分:0)

对于那些仍然面临类似问题的人。

根据firebase checklist

考虑的事项
  1. 将您的应用发行版SHA1指纹添加到Firebase项目设置中以进行身份​​验证
  2. 在与ProGuard一起在您的应用程序中使用Firebase Realtime Database时配置您的proguard规则,您需要考虑混淆后如何对模型对象进行序列化和反序列化。如果您使用DataSnapshot.getValue(Class)DatabaseReference.setValue(Object)读取和写入数据,则需要在proguard-rules.pro文件中添加规则:

添加此全局规则

-keepattributes Signature

# This rule will properly ProGuard all the model classes in
# the package com.yourcompany.models. Modify to fit the structure
# of your app.
-keepclassmembers class com.yourcompany.models.** {
  *;
}