multidex的正确打开方式

引言

做Android开发的小伙伴们.很多时候.伴随着业务逻辑的不断拓展.不断的集成第三方sdk.特别是类似 IM视频直播 的这些sdk.方法数的级别是随随便便上20K.这样就很容易导致出现65K.

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

eclipse的小伙伴就坑坑哒了.而Android Studio使用Gradle就很容易的解决这个问题.但是好多人都没有条件翻墙.很简单的配置都无从得知.特此写一个简单的配置.如果有梯子的同学.可以直接看官方的 guide.同时附上我自己写的sample项目地址: MultidexSample

下面进行简单的步骤说明:

引入依赖和开启multidex开关

首先打开对应的app module的build.gradle文件.

apply plugin: 'com.android.application'

android {
    defaultConfig {
        //xxx
        multiDexEnabled true  //开启multidex开关
    }
}

dependencies {
    compile 'com.android.support:multidex:1.0.1'  //引入依赖
}

自定义Application并且配置到清单上

自定义AppContext来继承Application.
在attachBaseContext的时候进行MultiDex.install(this);.也可以在super.onCreate();之前进行初始化.

public class AppContext extends Application {

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

    @Override
    public void onCreate() {
        super.onCreate();
    }
}

在清单中配置

<application
    android:name=".AppContext">
</application>

总结

就这样简单的配置.就可以解决65K而导致无法编译的问题.但是对于multidex引发出来的一些问题.可以参考一下我之前另外一篇转的博客 其实你不知道MultiDex到底有多坑.也可以看看凯子哥的分析:关于MultiDex方案的一点研究与思考

坚持原创技术分享,您的支持将鼓励我继续创作!