1. 添加配置調(diào)試release包,這樣的抓取的log日志,這種方式可以知道具體錯誤,(無法精準到是哪一行)
/在 AndroidManifest.xml 文件的 application 標簽中
添加以下配置,即可在release包下的日志了/
android:debuggable="true"
tools:ignore="HardcodedDebugMode"
2.debug下gson解析一切正常,但是發(fā)了release版本的時候,發(fā)現(xiàn)解析出來的數(shù)據(jù)全部是null.
原因:因為release版本下用了混淆,而gson解析需要的javabean,我忘了忽略混淆了,導(dǎo)致被混淆后,無法正正常解析.
解決:把javabean加入避免混淆。
要忽略的javeBean是靜態(tài)內(nèi)部類。
寫法:寫上類的絕對路徑,類名 ,$ ,再就是內(nèi)部類名稱。
-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,發(fā)現(xiàn)null異常:
簡單搜了下,指向了是greendao混淆導(dǎo)致的問題,但是檢查混淆配置,已經(jīng)有了混淆的配置:
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
如果是 ArrayIndexOutOfBoundsException 需要將混淆配置調(diào)整為
-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.**