如何为 Jackson JSON 处理器设置 PROGUARD? [英] How to setup PROGUARD for Jackson JSON Processor?
问题描述
我正在为我的应用程序使用 Jackson JSON 处理器.使用
I am using Jackson JSON Processor for my app.Included this using
compile 'com.fasterxml.jackson.core:jackson-databind:2.4.2'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.4.2'.
我的 proguard 配置是.
And my proguard configuration is.
## BEGIN -- Google Play Services proguard.txt
-keep class * extends java.util.ListResourceBundle {
protected java.lang.Object[][] getContents();
}
# Keep SafeParcelable value, needed for reflection. This is required to support backwards
# compatibility of some classes.
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
# Keep the names of classes/members we need for client functionality.
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
## END -- Google Play Services proguard.txt
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
-dontskipnonpubliclibraryclassmembers
-dontskipnonpubliclibraryclasses
-keepattributes *Annotation*.
-keep class org.codehaus.jackson.**
-dontwarn twitter4j.**
-dontwarn com.facebook.android.BuildConfig
-dontwarn org.apache.commons.**
-keep class org.apache.http.** { *; }
-dontwarn org.apache.http.**
-dontwarn com.nhaarman.listviewanimations.**
但是,当我尝试在调试模式下编译时,出现以下错误.
However when i try to compile in debug mode i get the following error.
26207-26207/com.blah E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.blah, PID: 26207
java.lang.NoSuchFieldError: PUBLIC_ONLY
at java.lang.Class.getDeclaredAnnotation(Native Method)
at java.lang.Class.getAnnotation(Class.java:290)
at com.b.a.c.f.ah.<clinit>(Unknown Source)
at com.b.a.c.z.<clinit>(Unknown Source)
at com.blah.utils.c.<init>(Unknown Source)
at com.blah.main.a.a(Unknown Source)
at com.blah.main.b.a.a(Unknown Source)
at com.blah.main.b.a.onCreateView(Unknown Source)
长期致力于此!感谢您的帮助!谢谢!
Working on it for a long time!Would appreciate your help!Thanks!
推荐答案
经过多次调试终于找到了我的 Proguard 配置的答案
After much debugging finally found the answer my Proguard configuration is
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepnames class com.fasterxml.jackson.** { *; }
-dontwarn com.fasterxml.jackson.databind.**
-keep class org.codehaus.** { *; }
-keepclassmembers public final enum org.codehaus.jackson.annotate.JsonAutoDetect$Visibility {
public static final org.codehaus.jackson.annotate.JsonAutoDetect$Visibility *; }
-keep public class your.class.** {
public void set*(***);
public *** get*();
}
您的类描述了用于解析响应的 getter setter 类/类.
your class depicts the getter setter classes/class you are using to parse your response.
我还添加了 compile 'com.fasterxml.jackson.core:jackson-core:2.4.2'
到我以前丢失的 Gradle 文件.现在我的 Proguard 像野兽一样工作......;-)
Also I added compile 'com.fasterxml.jackson.core:jackson-core:2.4.2'
to my Gradle file which was missing previously. Now my Proguard works like a beast..;-)
这篇关于如何为 Jackson JSON 处理器设置 PROGUARD?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!