【问题标题】:Why is data not loading into app from firebase after publishing app on google playstore?为什么在 Google Playstore 上发布应用程序后数据没有从 Firebase 加载到应用程序中?
【发布时间】:2020-02-10 08:41:00
【问题描述】:

我已经完成了我的应用程序的构建,并成功地在 Google Playstore 上发布了它。但是当用户从 Playstore 下载它时,数据并没有加载到他们的手机上。它只是空白。它能够读取列表的大小,但没有加载数据。

可能是什么问题?下面是图片的显示



编辑

2020-02-10 10:18:56.352 281-281/? E/DumpTunnel: finding regDump() failed 2020-02-10 10:18:58.664 30084-30084/? E/AndroidRuntime: FATAL
EXCEPTION: main Process: com.onlinestore.finalapp, PID: 30084 c.d.b.l.c: No properties to serialize found on class c.e.a.c.f at c.d.b.l.r.u0.p.a$a.<init>(:11) at c.d.b.l.r.u0.p.a.a(Unknown Source:12) at c.d.b.l.r.u0.p.a.c(Unknown Source:233) at c.d.b.l.e.a(:9) at c.e.a.a.n.a(Unknown Source:59) at c.d.a.a.k.s.run(:6) at android.os.Handler.handleCallback(Handler.java:790) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6548) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:451) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)

我现在在配置我的 proguard 后收到此错误

【问题讨论】:

  • 你能添加你的代码和firebase数据库结构吗?
  • 请不要添加duplicate问题。
  • 我也有类似的问题,@puma_black 解决了吗?
  • 您好@puma_black,您可以在哪里解决这个问题...我遇到了同样的问题,这让我很沮丧...看来问题出在从捆绑文件生成的应用程序上上传到应用商店

标签: java android firebase firebase-realtime-database


【解决方案1】:

默认规则禁止用户对您的数据库进行读写访问。使用这些规则,您只能通过 Firebase 控制台访问数据库。 您需要在此处更改它们。

// These rules don't allow anyone to read or write access to your database
{
  "rules": {
    ".read": false,
    ".write": false
  }
}

如果这两个都是真的并且仍然存在这个问题,那么请阅读 firebase 的官方文档和集成手册。 Adding Firebase to Android...

另外,你会知道发布 APK 和调试 APK 有不同的

  • SHA1
  • API 密钥

用于谷歌服务。因此,您需要在项目设置中的 Firebase 上添加它们。完成此操作后,您需要重新下载

google-services.json

文件并将其放入您的项目中的正确位置。使用您的 Keystore 创建一个新的发布版本,并在 Google Play 商店上发布您的应用程序。 我希望它适用于您的情况。

【讨论】:

  • 如何在我的 firebase 设置中同时获取发布和调试密钥?
  • 从 Android Studio 2.2 开始,可以从 IDE 内部获取 SHA-1 指纹。开发人员用来查找指纹的最常用方法是打开控制台/终端/cmd 提示符并使用 keytool 命令。这是一个例子:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
  • 现在我将向您展示一种更好更快的获取 SHA-1 指纹的方法。步骤 1. 在 Android Studio 中打开您的项目。步骤 2. 单击右侧的 Gradle 菜单并展开它。 Step 3. 点击android,然后签署报告。
  • 我在 firebase 数据库设置中有 SHA-1 指纹。但我不明白为什么我的应用程序仍然崩溃
  • Android 应用程序在因未处理的异常导致意外退出时崩溃,解决崩溃问题可能很困难。但是,如果您可以确定崩溃的根本原因,您很可能可以找到解决方案。因此,请阅读您的堆栈跟踪、内存错误和网络异常。
【解决方案2】:

就我而言,我只需将 minifyEnabled 从 true 更改为 false

现在看起来如此“:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

【讨论】:

  • 我的问题就这样解决了。谢谢!!
【解决方案3】:

请确保您的数据库具有读取和写入数据的公共访问权限,因为默认情况下对您的数据库的读取和写入访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。

这里是configure your rules for public access的链接

这使您的数据库可供公众访问,因此没有您的应用程序的人也可以访问您的数据库,因此请务必在正确的authentication之后限制您的数据库。

【讨论】:

  • 我已经为私人和公共访问配置了我的 Firebase 安全规则。该应用程序似乎在某些设备上运行良好,但在其他设备上崩溃。检查我的错误日志编辑
【解决方案4】:

可能晚了,但我在将应用发布到 Playstore 后听到了类似的问题。

根据firebase checklist考虑的事项

  1. 将您的应用版本 SHA1 指纹添加到 Firebase 项目设置以进行身份​​验证
  2. 在您的应用中使用 Firebase 实时数据库和 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.** {
  *;
}

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2021-07-15
    • 2022-07-13
    • 2020-09-28
    • 2021-08-05
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多