Android 64K方法数问题:Error:warning: Ignoring InnerClasses attribute for an anonymous inner class

错误原因

编译时会出现此错误信息,并且通常是在同一时间大量的出现。

实际上就是所谓的“Android 64K方法数”的问题,当项目源码加上引入的包中的总方法数超过65536时,可能会报此错误。

Android5.0之前的Dalvik虚拟机,默认情况下只会为每个APP生成一个classs.dex,而单个.dex文件允许的最大方法数是65536,当总方法数超过此限制时,编译器就会报上述的异常。

解决方案(MultiDex)

既然知道是由于单.dex文件的方法数有限制,那么如果拆分成多个小一点的.dex文件,此问题不就解决了吗?

谷歌推出的MultiDex Support Library的函数库,正是基于这个方案,解决“64K方法数”问题的。

具体步骤

1、修改Gradle配置文件,添加MultiDex Support Library的依赖,并启用MultiDex支持

dependencies { implementation 'com.android.support:multidex:1.0.1' } 
defaultConfig {
     multiDexEnabled true
}

2、设置Application支持多Dex模式

在MultiDexApplication JavaDoc中描述了三种可选方法:

(1)在AndroidManifest.xml的application中声明android.support.multidex.MultiDexApplication;

(2)如果使用了自定义Application,让其继承MultiDexApplication;

(3)如果自定义Application已经继承自其它Application类,你不想或者不能修改它,那么可以重写attachBaseContext()方法:

@Override 
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base); MultiDex.install(this);
}

之后,再编译运行,上述问题就不会再出现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值