免费资源网 – https://freexyz.cn/
目录
- 1. 添加配置调试release包,这样的抓取的log日志,这种方式可以知道具体错误,(无法精准到是哪一行)
- 2.debug下gson解析一切正常,但是发了release版本的时候,发现解析出来的数据全部是null.
- 3.release模式下app启动greendao,发现null异常:
1. 添加配置调试release包,这样的抓取的log日志,这种方式可以知道具体错误,(无法精准到是哪一行)
/在 AndroidManifest.xml 文件的 application 标签中
添加以下配置,即可在release包下的日志了/
android:debuggable="true" tools:ignore="HardcodedDebugMode"
2.debug下gson解析一切正常,但是发了release版本的时候,发现解析出来的数据全部是null.
原因:因为release版本下用了混淆,而gson解析需要的javabean,我忘了忽略混淆了,导致被混淆后,无法正正常解析.
解决:把javabean加入避免混淆。
要忽略的javeBean是静态内部类。
写法:写上类的绝对路径,类名 ,$ ,再就是内部类名称。
-keep class com.example.app.Mybean$StaticTest{ *; }
如果是正常的javeBean就直接写上类的绝对路径,类名即可;
-keep class com.example.app.MyClass{ *; }
如果想要忽略某个包下的所有javaBean。就直接写上包的路径即可;
-keep class com.example.app.bean.** { *; }
3.release模式下app启动greendao,发现null异常:
简单搜了下,指向了是greendao混淆导致的问题,但是检查混淆配置,已经有了混淆的配置:
-keep class org.greenrobot.greendao.**{*;} -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties
如果是 ArrayIndexOutOfBoundsException 需要将混淆配置调整为
-keep class org.greenrobot.greendao.**{*;} -keep public class * extends org.greenrobot.greendao.AbstractDao -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; } -keep class **$Properties -keepclassmembers class **$Properties {*;} #optional -keep class net.sqlcipher.database.**{*;} -keep public interface net.sqlcipher.database.** -dontwarn net.sqlcipher.database.** -dontwarn org.greenrobot.greendao.**
免费资源网 – https://freexyz.cn/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)