android - Firebase 实时数据库不会在发布 apk [Android] 中检索数据

标签 android firebase android-proguard

在设备或模拟器上运行应用程序时检索到的数据完美,但在生成发布 apk 时不显示图像

我认为问题是由于proguard所以我尝试了这个答案
https://stackoverflow.com/a/26274623/4819445

但它不起作用。

这是我的proguard_rules.pro

-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**
-dontwarn com.firebase.**
-dontnote com.firebase.client.core.GaePlatform

-keepattributes Signature
-keepattributes *Annotation*
-keepattributes InnerClasses,EnclosingMethod

-keep class com.images.backgrounds.** { *; }

-keep class com.firebase.** { *; }

-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }


-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.apache.**
-dontwarn org.w3c.dom.**
-dontwarn javax.annotation.**
#
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**
-keep class javamail.** {*;}
-keep class javax.mail.** {*;}
-keep class javax.activation.** {*;}
-keep class com.sun.mail.dsn.** {*;}
-keep class com.sun.mail.handlers.** {*;}
-keep class com.sun.mail.smtp.** {*;}
-keep class com.sun.mail.util.** {*;}
-keep class mailcap.** {*;}
-keep class mimetypes.** {*;}
-keep class myjava.awt.datatransfer.** {*;}
-keep class org.apache.harmony.awt.** {*;}
-keep class org.apache.harmony.misc.** {*;}

另外,我添加 @Keep在模型类
我在 bulid gradle 文件中设置了 minifyEnabled = true :
release {
            useProguard true
            shrinkResources true
            minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

但是 POJO 中的图像仍然没有显示在 APK 中

请帮我

最佳答案

Proguard 很可能会在 Release模式下隐藏/剥离这些类,从而使 Firebase 无法序列化/反序列化它们。
您可以包含注释“@Keep”,因此 proguard 不会从此类中删除任何方法。

例如。:

...
@IgnoreExtraProperties
@Keep
public class Posto {
    public String uid;
    public String nome;
...

在 build.gradle 中包含此依赖项:
compile 'com.android.support:support-annotations:25.2.0' 

查看更多信息:https://developer.android.com/studio/build/shrink-code.html

此答案基于我自己的问题,在 Encapsulated getters refurn null from firebase database only in release. Works fine in debug mode 上报告并解决

关于android - Firebase 实时数据库不会在发布 apk [Android] 中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669621/

相关文章:

android - 如果在 onCreate() 之后填充,则不会调用 ListView 适配器 getView()

java - 编写新 DialogPreference 类的简洁方法?

android - Facebook 共享对话框在 MI 设备中无法正常工作

ios - 如何使用 Swift 3 存储在 Firebase 中创建另一个新用户的已登录用户的 UID?

android - 仅使用 Proguard 来禁用日志记录和缩减资源

android - 正确禁用 AdMob 广告

firebase - Firebase 是云功能吗?术语 2gen 和 v2 指的是同一个东西吗?

swift - 返回没有 child 的结果的 child 的 Firebase 订单

android - 发布版本中的 ActionBar 缺少后退箭头,但调试版本中没有

安卓 AESObfuscator 与混淆器