Android debug包运行正常,release包崩溃解决办法

1. 添加配置调试release包,这样的抓取的log日志,这种方式可以知道具体错误,(无法精准到是哪一行)

/在 AndroidManifest.xml 文件的 application 标签中
添加以下配置,即可在release包下的日志了
/

ini 复制代码
    android:debuggable="true"
    tools:ignore="HardcodedDebugMode"

2.debug下gson解析一切正常,但是发了release版本的时候,发现解析出来的数据全部是null.

原因:因为release版本下用了混淆,而gson解析需要的javabean,我忘了忽略混淆了,导致被混淆后,无法正正常解析.

解决:把javabean加入避免混淆。

要忽略的javeBean是静态内部类。

写法:写上类的绝对路径,类名 ,$ ,再就是内部类名称。

kotlin 复制代码
-keep class com.example.app.Mybean$StaticTest{ *; }

如果是正常的javeBean就直接写上类的绝对路径,类名即可;

kotlin 复制代码
-keep class com.example.app.MyClass{ *; }

如果想要忽略某个包下的所有javaBean。就直接写上包的路径即可;

kotlin 复制代码
-keep class com.example.app.bean.** { *; }

3 .release模式下app启动greendao,发现null异常:

简单搜了下,指向了是greendao混淆导致的问题,但是检查混淆配置,已经有了混淆的配置:

scala 复制代码
-keep class org.greenrobot.greendao.**{*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties

如果是 ArrayIndexOutOfBoundsException 需要将混淆配置调整为

scala 复制代码
-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.**
相关推荐
y = xⁿ30 分钟前
MySQL八股知识合集
android·mysql·adb
andr_gale1 小时前
04_rc文件语法规则
android·framework·aosp
祖国的好青年2 小时前
VS Code 搭建 React Native 开发环境(Windows 实战指南)
android·windows·react native·react.js
黄林晴3 小时前
警惕!AGP 9.2 别只改版本号,R8 规则与构建链路全线收紧
android·gradle
小米渣的逆袭3 小时前
Android ADB 完全使用指南
android·adb
儿歌八万首3 小时前
Jetpack Compose Canvas 进阶:结合 animateFloatAsState 让自定义图形动起来
android·动画·compose
zhangphil4 小时前
Android Page 3 Flow读sql数据库媒体文件,Kotlin
android·kotlin
神探小白牙4 小时前
echarts,3d堆叠图
android·3d·echarts
李白的天不白4 小时前
如何项目发布到github上
android·vue.js