首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改造与防护误差

改造与防护误差
EN

Stack Overflow用户
提问于 2015-09-27 21:13:36
回答 1查看 1.8K关注 0票数 3

当我在使用proguard时,我得到了以下异常(注意,没有Proguard,一切都很好):

代码语言:javascript
复制
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.path.to.my.model
        at com.path.to.my.callback.onResponse(Unknown Source)
        at retrofit.ExecutorCallAdapterFactory$ExecutorCallback$1.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5351)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)

我的保护文件如下:

代码语言:javascript
复制
-dontwarn okio.**
-dontwarn retrofit.**
-keep class retrofit.** { *; }
-keepattributes Signature
-keepattributes Exceptions

与我正在使用的Retrofit相关的依赖项是:

代码语言:javascript
复制
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'

为什么会发生这种情况?我怎么才能找到问题呢?排除问题的想法将是非常有用的。提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-27 23:08:21

检查以确保已配置为gson的前警卫,也。您需要确保与gson一起使用的POJO不会被混淆,注释也不会被删除。

注意:在下面的示例中,您应该用模型类替换com.google.gson.examples.android.model.** { *; }

从gson 示例程序保护配置--

代码语言:javascript
复制
##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }

##---------------End: proguard configuration for Gson  ----------
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32812909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档