Android studio 开启debug、release混淆模式和混淆打包安装后报错NullPointerException int java.util.List.size()

新手日常踩雷区,留下此贴,希望下次不会再这样折腾,一开始报错,因为手机连不上电脑不好调试,所以发现在app gradle中配制以下代码可以开启debug安卓模拟机开启安装模式调试:

signingConfigs {
    release {

    }

    debug{

    }
}

buildTypes {
    release {
        // 不显示Log
        buildConfigField "boolean", "LOG_DEBUG", "false"
        //开启代码混淆
        minifyEnabled true

        //shrinkResources true // 移除无用的resource文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release  //使用上述签名信息
    }
    debug {
        //开启代码混淆
        minifyEnabled true
        //shrinkResources fa// 移除无用的resource文件
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.debug
    }
}

然后发现报

java.lang.NullPointerException: Attempt to invoke interface method 

'int java.util.List.size()' on a null object reference

at com.*.*.a.b.getItemCount

(Unknown Source)

注意这个地方是List.size(),空。

解决:所有model类不要混淆。

解决方式:所有的gson解析实体类都不用混淆,否则数据没有,会报错误。

-keep class 你的自定义gson解析包或类路径.**{*;}

 

好了,愿自己不再踏坑。

参考地址:http://blog.csdn.net/tou_star/article/details/70256011

"java.lang.NullPointerException" 是 Android Studio 中常见的运行时错误,它通常发生在你尝试访问或操作一个 null 对象时。这意味着你在代码中试图调用一个对象的方法或访问其属性,但该对象的引用实际上是空的,没有指向任何有效的内存位置。 这种情况可能由以下几个原因引起: 1. **未初始化对象**:可能你忘记为某个对象赋值,或者在对象被声明但赋值前就尝试使用了它。 2. **空条件判断缺失**:如果你依赖某个外部数据源或从网络请求返回的数据,如果没有正确处理空值,可能会导致NullPointerException。 3. **集合遍历**:在遍历集合(如 ArrayList 或 HashMap)之前,确保它们非空,否则访问它们的元素会抛出 NPE。 4. **方法返回值**:检查方法返回值是否为 null,尤其是那些可能返回对象的方法。 修复这类错误的一般步骤包括: - 添加条件检查:在调用方法或访问属性之前,检查对象是否为 null。 - 初始化变量:确保所有需要的对象在使用前都被正确地初始化。 - 错误处理和日志记录:捕获异常并提供有用的错误信息,以便于调试。 如果你能提供具体的错误堆栈或代码片段,我可以给出更具体的帮助。相关问题: 1. 如何确定NPE是在哪个代码行发生的? 2. 如何在Android Studio中查看详细的错误堆栈信息? 3. 在处理NPE时,如何避免程序崩溃并提供友好的用户提示?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值