未能将简单POJO写入Firebase(Android)

未能将简单POJO写入Firebase(Android),android,jackson,firebase,pojo,firebase-realtime-database,Android,Jackson,Firebase,Pojo,Firebase Realtime Database,我试图将Firebase Android与一些简单的POJO一起使用,但即使使用以下示例代码,我也会遇到一些异常 final Firebase fb = getFirebaseAccess(); final Subscription subscription = new Subscription(url, System.currentTimeMillis()); Firebase subscriptionRef = fb.child("subscriptions").push(); subscr

我试图将Firebase Android与一些简单的POJO一起使用,但即使使用以下示例代码,我也会遇到一些异常

final Firebase fb = getFirebaseAccess();
final Subscription subscription = new Subscription(url, System.currentTimeMillis());
Firebase subscriptionRef = fb.child("subscriptions").push();
subscriptionRef.setValue(subscription); // exception thrown here
//Subscription.java

 public class Subscription {

        private String url;
        private long subscribedAt;

        public Subscription() {
        }

        public Subscription(String url, long subscribedAt) {
            this.url = url;
            this.subscribedAt = subscribedAt;
        }

        public String getUrl() {
            return this.url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public long getSubscribedAt() {
            return this.subscribedAt;
        }

        public void setSubscribedAt(long subscribedAt) {
            this.subscribedAt = subscribedAt;
        }
    }
将引发以下异常:

无法解析到快照 com.fasterxml.jackson.databind.JsonMappingException:找不到com.mypackage.Subscription类的序列化程序,也找不到创建BeanSerializer的属性(要避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_bean)) 未找到com.myPackage.Subscription类的序列化程序,也未找到创建BeanSerializer的属性(为避免异常,请在\u空\u bean上禁用SerializationFeature.FAIL_))

我不明白什么失败了,因为我保留了公共默认构造函数,每个变量都有自己的公共getter

有什么想法吗

顺便说一句,如果我用字符串字段或属性映射替换POJO,它就可以正常工作

编辑: 我正在使用启用了minify的Proguard。 我有以下指示:

# Firebase 2.0
# keep POJOs
-keepnames class com.myPackage.** { *; }
-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.w3c.dom.**
-dontwarn org.joda.time.**
-dontwarn org.shaded.apache.**
-dontwarn org.ietf.jgss.**

似乎正在通过Proguard删除与Jackson相关的文件,请尝试以下Proguard配置:

    # Proguard configuration for Jackson 2.x (fasterxml package instead of codehaus package)

        -keep class com.fasterxml.jackson.databind.ObjectMapper {
            public <methods>;
            protected <methods>;
        }
        -keep class com.fasterxml.jackson.databind.ObjectWriter {
            public ** writeValueAsString(**);
        }

        # Basic ProGuard rules for Firebase Android SDK 2.0.0+

        -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.**

# Facebook

-keep class com.facebook.** {*;}
-keepattributes Signature

# Firebase UI

-dontwarn com.firebase.ui.auth.twitter.**
Jackson 2.x的Proguard配置(fasterxml包而不是codehaus包) -keep类com.fasterxml.jackson.databind.ObjectMapper{ 公众; 受保护的; } -保留com.fasterxml.jackson.databind.ObjectWriter类{ 公共**writeValueAsString(**); } #Firebase Android SDK 2.0.0的基本ProGuard规则+ -保持类com.firebase.*{*;} -保持类org.apache.*{*;} -keepnames类com.fasterxml.jackson.*{*;} -keepnames类javax.servlet.*{*;} -keepnames类org.ietf.jgss.*{*;} -dontwarn org.apache** -dontwarn org.w3c.dom** #脸谱网 -保持类com.facebook.*{*;} -保留署名 #Firebase用户界面 -dontwarn com.firebase.ui.auth.twitter**
Hmm。。。唯一快速浮现在脑海中的是proguard可能正在缩小您的
订阅
类。看到你是对的,我正在使用Proguard和minify,但我已经在使用那些说明(我编辑了问题)好的。如果禁用proguard,问题会消失吗?(这不是一个解决方案,但至少要确保我们看的方向正确)我现在不能禁用它,因为我将达到65K DEX限制…也许是一个愚蠢的问题,但您是否更改了
-keepnames class com.myPackage.*{*}
以匹配您的包?