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

问题描述 投票:2回答:1

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

我认为问题是由于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并在构建gradle文件中创建minifyEnabled = true:

release {
            useProguard true
            shrinkResources true
            minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

但是形成POJO的图像仍未在APK中显示

请帮我

android firebase android-proguard
1个回答
3
投票

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

e.f.:

...
@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上报告和解决

© www.soinside.com 2019 - 2024. All rights reserved.