突发性 java.lang.NoClassDefFoundError

主要问题

java.lang.NoClassDefFoundError

问题描述

在使用不同版本手机进行测试时,往往出现手机类型兼容性问题与手机系统版本兼容性问题,此问题主要为后者,描述如下:

1. 开发中使用5.0+android系统(coolpad);
2. 编译运行无误;
3. 使用5.0-android系统(HUAWEI-4.4)调试时出现初始化出错;
4. logcat 输出错误为java.lang.NoClassDefFoundError
5. 出问题的类文件保证存在切能通过编译

问题现象

由Error导致应用崩溃或闪退

问题分析

在开发中,所做项目的量级与应用兼容android版本是一个非常严重的问题,而在此问题上,大致分析为两种:

  1. 应用的使用版本最低要求是 API 16 通过查阅 Android 5.0以下出现 java.lang.NoClassDefFoundError: 得出可能是版本问题;
  2. 而在应用中,由于需求不断变更导致文件越来越多,有可能引发Dex超出方法数问题, 参照 Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚 ;

解决方案

1.添加依赖

compile 'com.android.support:multidex:1.0.0'

2.配置build.gradle

android {
    ...
    defaultConfig {
        ...
    multiDexEnabled true
        ...
    }
}

3.自定义Application继承MultiDexApplication或者重写Application的方法attachBaseContext(),并调用MultiDex.install()

例如:

//继承MultiDexApplication使用
public class App extends MultiDexApplication {
    ...
}

4.clean 重新编译,如果不放心可删除build文件夹

5.问题解决

此问题属于个人开发中所遇问题,并不代表此类问题都能通过这种方式解决,若有更好解决方式或相似问题,欢迎各位留言探讨,不胜感激!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值