Android 5.0以下出现java.lang.NoClassDefFoundError错误

本文介绍了解决Android应用因方法数超过65535限制导致崩溃的问题。通过启用multiDex并添加依赖,再配置Application类继承MultiDexApplication或重写attachBaseContext方法,最终Clean和Rebuild项目来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司面向第三方的SDK出现 java.lang.NoClassDefFoundError 之类的崩溃,但只有一个用户出现,机型系统主要出现在4.x,在stack overflow看到主要是 5.0以下一些手机对Android程序的方法数超出了65535造成的崩溃。解决办法如下:

Model的build.gradle中的defaultConfig 中声明 multiDexEnabled true,在依赖中添加 compile 'com.android.support:multidex:1.0.1',配置信息如下:部分信息根据自己环境配置

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.xxx.xxx"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}

置完成之后Application 继承 MultiDexApplication,然后AndroidManifest.xml声明继承的Application。

如果你的Application已经继承了其他类并且不想做改动,那么还有另外一种使用方式,覆写attachBaseContext()方法:
public class MyApplication extends FooApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
配置完成Clean Project,Rebuild Project然后再打包测试发版。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值