突发性 java.lang.NoClassDefFoundError

来源:互联网 发布:佛山网络推广方法 编辑:程序博客网 时间:2024/05/19 05:06

主要问题

java.lang.NoClassDefFoundError

问题描述

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

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

问题现象

由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