Android debug包運行正常,release包崩潰解決辦法

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


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容