仅在应用程序发布到 Google Play 后,Firebase 数据库才会出现错误 - android

2023-12-12

我正在制作一个使用 firebase 数据库的应用程序。我的应用程序运行时没有崩溃,直到我将其作为测试版发布到 Google Play 上。当我发布该应用程序时,它不断崩溃并在一行上返回 com.google.firebase.database.DatabaseException 。完全相同的代码但未发布不会崩溃。

这是整个堆栈跟踪:

com.google.firebase.database.DatabaseException: 
    at com.google.android.gms.internal.zzelx.<init> (Unknown Source)
    at com.google.android.gms.internal.zzelw.zzf (Unknown Source)
    at com.google.android.gms.internal.zzelw.zzbx (Unknown Source)
    at com.google.android.gms.internal.zzelw.zzbw (Unknown Source)
    at com.google.firebase.database.DatabaseReference.zza (Unknown Source)
    at com.google.firebase.database.DatabaseReference.setValue(UnknownSource)
    at aheschl.studyup.NewSet$2.onClick (NewSet.java:129)
    at android.view.View.performClick (View.java:6308)
    at android.widget.TextView.performClick (TextView.java:11202)
    at android.view.View$PerformClick.run (View.java:23969)
    at android.os.Handler.handleCallback (Handler.java:751)
    at android.os.Handler.dispatchMessage (Handler.java:95)
    at android.os.Looper.loop (Looper.java:154)
    at android.app.ActivityThread.main (ActivityThread.java:6816)
    at java.lang.reflect.Method.invoke (Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1563)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1451)

以下是堆栈跟踪引用的 onClickListener 中的代码(带块引号的行是触发错误的行):

CardSet newSetOfWords = new CardSet(name, words);

String id;

id = user.getUid();

DatabaseReference newReference = database.getReference(id + "/" + name);
newReference.setValue(newSetOfWords);
Intent i = new Intent(NewSet.this, TeacherView.class);

startActivity(i);

finish();

我不知道这是否有帮助,但这是我的数据库访问规则:

{
  "rules": {
      ".read": "true",
      ".write": "auth != null"
   }
 }

UPDATE--

这是 proguard-rules.pro

# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

# Add this global rule
-keepattributes Signature

# This rule will properly ProGuard all the model classes in

//This is what I copied off  the guide on the firebase website

# the package com.yourcompany.models. Modify to fit the structure
# of your app.
-keepclassmembers class aheschl.studyup.** {
  *;
}

这是卡片集:

public class CardSet {

    private String name;

    private ArrayList<String> words;

    public CardSet(String name, ArrayList<String> words){
        this.name = name;
        this.words = words;
    }

    protected String getName(){
        return name;
    }

    protected ArrayList<String> getWords(){
        return words;
    }

}

谢谢你的帮助!


POJO getter/setter 方法必须是public:

public class CardSet {

    private String name;

    private ArrayList<String> words;

    public CardSet(String name, ArrayList<String> words){
        this.name = name;
        this.words = words;
    }

    public String getName() {  // changed from protected
        return name;
    }

    public ArrayList<String> getWords(){  // changed from protected
        return words;
    }

}

当构建发布时minifyEnabled,Proguard 必须配置为保留 POJO 类。这在Android 实时数据库设置指南:

# Add this global rule
-keepattributes Signature

# This rule will properly ProGuard all the model classes in
# the package aheschl.studyup.
-keepclassmembers class aheschl.studyup.** {
  *;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅在应用程序发布到 Google Play 后,Firebase 数据库才会出现错误 - android 的相关文章

随机推荐

  • 某些字体大小在 Safari (iPhone) 上呈现得更大

    是否有 CSS 或其他原因导致 Safari iPhone 会忽略某些字体大小设置 在我的特定网站上 iPhone 上的 Safari 呈现的一些 font size 13px 文本大于 font size 15px 文本 它可能不支持某些
  • 使用 jQuery 在 iframe 中获取 HTML

    这是我的情况 我有一个名为iframe html 其中包含图像幻灯片的代码 代码有点像 用户可以使用嵌入代码将幻灯片添加到他们的博客或网站 可以来自不同的域 假设用户必须将幻灯片嵌入index html 他们可以通
  • 如何将反应对象添加到输出表中的辅助列标题?

    我正在开发一个转换表模块 并正在努力解决如何使用户可以理解输出的问题 我曾经在Excel中准备转换表 使表格清晰易读非常容易 但导出表格输出的数据需要几个小时 现在我的问题与 R 相反 需要几秒钟才能从数百万行数据生成表输出 但表表示远非简
  • Windows 批处理 - 文本文件中的随机行

    我无法让以下事情发挥作用 我有一个 400 行的文本文件 并且还在不断增长 我需要一个批处理脚本 从该文件中选择一个随机行 我尝试修改一些执行随机化的代码 但有时它会选择大于 400 的数字 并且脚本会返回错误 set file C Use
  • 物化选择不工作附加选项与

    我在我的项目中使用了materialize css 当我想使用ajax在macialize select中附加选项时遇到问题 我已经关注这个答案如何在materialize css框架中动态修改 但不工作 在我的 html 中 我使用物化模
  • 不使用fopen()读取文件(C语言)

    我正在开展一个学校项目 其中我们必须对保存在 txt 文件中的表进行一些操作 选择 最小值 最大值 问题是我们不能使用fopen fscanf fclose等常用函数 该程序将从命令行启动 如下所示 project exe select p
  • 创建逗号分隔的字符串作为 sql“IN”子句的输入

    我想要一个字符串作为 SQL IN 子句的输入 其中我想要一个以逗号分隔的字符串列表 您可以使用guava s Joiner Joiner on join inputsList
  • return 语句在 python 递归中不返回任何内容

    下面的方法在字符串中查找是否有任何 python 方法 def there is a call string return string find gt 1 def find and remove functions string foun
  • 在 Python 3.x 中,为什么磁盘上没有 itertools 共享对象?

    Is the itertools C 模块以某种方式包含在 3 x 的主要 Python 二进制文件中 假设 C 模块已构建并包含在内 如下所示 gt gt gt import inspect gt gt gt import itertoo
  • WiX 刻录升级最后显示卸载 UI

    我正在尝试为 WiX 和 Burn 创建自定义 UI 除了一件事之外 我几乎完成了 在正在升级 例如 1 0 0 到 1 1 0 的安装结束时 将开始卸载以前的版本并显示它的 UI 我的问题是我应该如何处理这个问题 以便用户最终看不到卸载用
  • ggplot2 中可以使用“大小点样式”的热图吗?

    是否可以在 ggplot2 中用圆形而不是方形绘制热图 如果不仅通过颜色渐变来表示值 而且还通过圆圈大小来表示值 那就太好了 我正在考虑这样的图表点热图其中圆的大小也按其特定值交替 我已经阅读了 ggplot2 的热图 但找不到解决方案 对
  • 通过删除最小数量的元素,将给定的整数数组转换为排序数组

    我正在解决以下问题 我必须通过删除最小数量的元素将给定的整数数组转换为排序数组 例如 3 5 2 10 11 将通过删除 2 进行排序 3 5 10 11 或者 3 6 2 4 5 7 7 将通过删除 3 6 进行排序 2 4 5 7 7
  • 在自己的线程中将数据写入 TcpSocket

    我的线程 TCP 服务器出现问题 我可以打开我的服务器 创建一个新的套接字 我可以通过套接字接收数据 我使用了readyRead 信号 然后使用readLine 来读取 这工作正常 现在我想将数据写入这个套接字从另一个线程 所以我创建了一个
  • eclipse 构建所有项目,甚至在为单个项目发布构建时也是如此

    Eclipse 版本 3 7 似乎存在一些问题 当我编译一些单个项目 通过 ant 或 buildProject 时 Eclipse 开始构建工作区中的所有项目 这需要很长时间 我尝试过以两种方式构建项目 右键单击ant文件 选择运行为并构
  • 用动画翻页(UIWebView)

    我有一个网络视图 它显示电子书的页面 我想用卷页动画从一页切换到下一页 现在 我知道如何切换页面以及如何在 webview 上应用卷页动画 但是如何以看起来像从一页翻转到另一页的方式应用卷曲动画呢 这是一些可下载代码并举例说明如何执行此操作
  • HTTP POST Google Cloud Functions NodeJS

    如何编写将接收 HTTP 请求然后将 HTTP POST 请求发送到不同端点的 Google Cloud Function 例如 我可以将 HTTP 触发器发送到我的云函数 https us central1 plugin check xx
  • 在 WPF 选项卡控件中将选项卡项文本设置为粗体

    当我将选项卡项目字体粗细设置为粗体时 该选项卡中的所有控件都会变为粗体 如何仅设置选项卡项的文本标题而不影响控件 这就是我为了让它发挥作用所做的 谢谢 SeeSharp 的提示
  • 与 iPhone DropBox API 的简单同步

    我对 DropBox API 感到有点沮丧 它应该是简单明了的 但我还没有找到关于如何进行简单同步的简单明了的解释 我遵循了 DropBox API 附带的自述文件中可以找到的所有说明 为了测试整个过程 我创建了两个按钮来从我的 DropB
  • ECMAScript 6 负二进制文字

    通过 EMCAScript6 我发现有一种方法可以表示二进制文字使用0b or 0B字首 我正在尝试它 但找不到表示负数的方法 因为它没有使用补码 我错过了什么吗 我找不到实际规范中解释二进制文字的位置 我想我可以通过类似的操作自己实现它
  • 仅在应用程序发布到 Google Play 后,Firebase 数据库才会出现错误 - android

    我正在制作一个使用 firebase 数据库的应用程序 我的应用程序运行时没有崩溃 直到我将其作为测试版发布到 Google Play 上 当我发布该应用程序时 它不断崩溃并在一行上返回 com google firebase databa