引言
做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方案的一点研究与思考