Android DexIndexOverflow错误解析和解决方案

前些天进行Android应用开发时遇到一个错误: DexIndexOverflow。后面经过努力解决,这里做个记录,也为其它遇到这个问题的人做个帮助。


这个错误是Android应用的方法总数限制造成的。Android平台的Java虚拟机Dalvik在执行DEX格式的Java应用程序时,使用原生类型short来索引DEX文件中的方法。这意味着单个DEX文件可被引用的方法总数被限制为65536。通常APK包含一个classes.dex文件,因此Android应用的方法总数不能超过这个数量,这包括Android框架、类库和你自己开发的代码。


具体错误如下:

     Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536


解决方案:

采用Android Developers提供的分片库,解决原理是将一个DEX文件分拆成多个DEX文件。


具体解决方案:

1、在gradle文件中引入multidex。

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

2、在应用中开启这个方法:
这里是在MyApplicaption中启动:

    @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、付费专栏及课程。

余额充值