将应用发布到 Play 商店后,Firebase 数据库无法正常工作
Firebase database doesnt work after publishing app to play store
我有问题。我在 android 工作室编写应用程序。将应用发布到 Play 商店后,firebase 数据库根本不起作用。我在 firebase 控制台项目设置中添加了 SHA1 密钥,有什么问题吗?
感谢任何帮助。
我从这里获取了 SHA1 密钥:
调试和发布版本有不同的 SHA1 密钥您最有可能使用调试 SHA1 密钥
使用以下代码生成 relase SHA1 密钥并将其添加到控制台 firebase 将起作用
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
您会注意到发布 APK 和调试 APK 具有不同的 SHA1 和 google services
的不同 API 密钥。因此,您需要在项目设置中的 Firebase 上添加它们。完成此操作后,您需要重新下载 google-services.json 文件并将其放入项目的正确位置。使用您的密钥库创建一个新的发布版本并在 Google Play 商店上发布您的应用程序。
希望对您有所帮助。
我找到了解决办法,虽然很奇怪。 class 中的变量,我存储了所有数据 enter image description here were not private. After i add private modifier to all variables problem was solved enter image description here
You will need to register the SHA-1 or SHA-256 keys of your
RELEASE-APK which is different from the DEBUG-APK on your firebase project settings using => add finger print
option.
调试 APK 以及如何生成调试 - SHA 指纹密钥
当您使用 运行 按钮 运行 您的应用程序时,默认生成 - Debug keystore Android Studio 或当您构建调试 apk.
- Debug-keystore 使用 android 作为 keystore 名称和别名 名称默认用于生成 SHA 密钥。
- 调试密钥库的位置默认为 C:\Users\USERNAME\ .android。
- 因此,您只需打开 CMD 并将其指向
C:\Program Files\Java\bin
目录并使用此命令生成调试 SHA 指纹(如果您想生成密钥到 txt 文件,即 D: 目录和名为 sha.txt 的文本文件中,将其添加到以下命令的末尾: > D:\sha.txt:
)
keytool -list -v -keystore ~/.android/debug.keystore -alias
androiddebugkey -storepass android -keypass android
RELEASE APK 以及如何生成 RELEASE-SHA 指纹密钥
- 当您使用 Android Studio 中的
Build => Generate signed Apk/Bundle
选项生成发布 apk 时,会生成发布密钥库。
- 当您第一次这样做时,系统会要求您创建一个新的密钥库,您可以在其中指定许多细节,最值得注意的是:密钥库路径和名称、密码、别名 和密码(用于密钥)。
- 根据上述参数,我们需要 Keystore Path & Name 和 Alias 作为命令,加上 执行命令后要求的密钥库密码。
- 现在执行以下命令,同时查看上述参数。
- ( 如果您想生成 txt 文件的密钥,即在 D: 目录和名为 sha.txt[= 的文本文件中57=] 将其添加到以下命令的末尾:
> D:\sha.txt:
)
keytool -list -v -keystore <keystore_path\your_keystore_name> -alias <your_alias_name>
对于那些仍然面临类似问题的人。
需要考虑的事项
- 将您的应用发布 SHA1 指纹添加到 Firebase 项目设置以进行身份验证
- 在您的应用中使用 Firebase Realtime Database 和 ProGuard 时配置您的 pro guard 规则,您需要考虑您的模型对象在混淆后将如何序列化和反序列化。如果使用
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.** {
*;
}
我有问题。我在 android 工作室编写应用程序。将应用发布到 Play 商店后,firebase 数据库根本不起作用。我在 firebase 控制台项目设置中添加了 SHA1 密钥,有什么问题吗?
感谢任何帮助。
我从这里获取了 SHA1 密钥:
调试和发布版本有不同的 SHA1 密钥您最有可能使用调试 SHA1 密钥
使用以下代码生成 relase SHA1 密钥并将其添加到控制台 firebase 将起作用
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
您会注意到发布 APK 和调试 APK 具有不同的 SHA1 和 google services
的不同 API 密钥。因此,您需要在项目设置中的 Firebase 上添加它们。完成此操作后,您需要重新下载 google-services.json 文件并将其放入项目的正确位置。使用您的密钥库创建一个新的发布版本并在 Google Play 商店上发布您的应用程序。
希望对您有所帮助。
我找到了解决办法,虽然很奇怪。 class 中的变量,我存储了所有数据 enter image description here were not private. After i add private modifier to all variables problem was solved enter image description here
You will need to register the SHA-1 or SHA-256 keys of your RELEASE-APK which is different from the DEBUG-APK on your firebase project settings using =>
add finger print
option.
调试 APK 以及如何生成调试 - SHA 指纹密钥
-
当您使用 运行 按钮 运行 您的应用程序时,默认生成
- Debug keystore Android Studio 或当您构建调试 apk.
- Debug-keystore 使用 android 作为 keystore 名称和别名 名称默认用于生成 SHA 密钥。
- 调试密钥库的位置默认为 C:\Users\USERNAME\ .android。
- 因此,您只需打开 CMD 并将其指向
C:\Program Files\Java\bin
目录并使用此命令生成调试 SHA 指纹(如果您想生成密钥到 txt 文件,即 D: 目录和名为 sha.txt 的文本文件中,将其添加到以下命令的末尾:> D:\sha.txt:
)
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
RELEASE APK 以及如何生成 RELEASE-SHA 指纹密钥
- 当您使用 Android Studio 中的
Build => Generate signed Apk/Bundle
选项生成发布 apk 时,会生成发布密钥库。 - 当您第一次这样做时,系统会要求您创建一个新的密钥库,您可以在其中指定许多细节,最值得注意的是:密钥库路径和名称、密码、别名 和密码(用于密钥)。
- 根据上述参数,我们需要 Keystore Path & Name 和 Alias 作为命令,加上 执行命令后要求的密钥库密码。
- 现在执行以下命令,同时查看上述参数。
- ( 如果您想生成 txt 文件的密钥,即在 D: 目录和名为 sha.txt[= 的文本文件中57=] 将其添加到以下命令的末尾:
> D:\sha.txt:
)
keytool -list -v -keystore <keystore_path\your_keystore_name> -alias <your_alias_name>
对于那些仍然面临类似问题的人。
需要考虑的事项- 将您的应用发布 SHA1 指纹添加到 Firebase 项目设置以进行身份验证
- 在您的应用中使用 Firebase Realtime Database 和 ProGuard 时配置您的 pro guard 规则,您需要考虑您的模型对象在混淆后将如何序列化和反序列化。如果使用
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.** {
*;
}