错误信息如下:
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
添加应用的一个jar包时发生的这个错误,可能是因为同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的个数(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件。
如何解决呢:
1、在项目的build.gradle文件的dependencies 节中添加分包设置:
dependencies {
...
compile 'com.android.support:multidex:'
...
}
2、通过在defaultConfig节中设置multiDexEnabled标签为true,开启multi-dexing支持
defaultConfig {
...
multiDexEnabled true
...
}
3、分三种情况:
1).如果你未创建自己的Application.class,直接在AndroidManifest.xml文件的Application声明中添加;
android:name="android.support.multidex.MultiDexApplication"
2).你已经创建了自己的application,那么将你之前继承的android.app.Application换成android.support.multidex.MultiDexApplication
3).如果你的application继承的一些其他类,并且你不想改变它,那么,如下重写attachBaseContext().
public class MyApplication extends FooApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
4、编译过程可能内存不足。为了修复它,设置以下:
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
5、重新build,生成签名APK,安装使用正常(一般情况的前两步骤就可以搞定)。