我是在更换应用的一个jar包时发生的这个错误,网上查到说是因为同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65935个(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、分三种情况:
a.如果你未创建自己的Application.class,直接在AndroidManifest.xml文件的Application声明中添加;
android:name="android.support.multidex.MultiDexApplication"
b.你已经创建了自己的application,那么将你之前继承的android.app.Application换成android.support.multidex.MultiDexApplication
c.如果你的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,安装使用正常。
(PS:我是在使用1、2步之后就编译安装OK,所以并没有往下走了)
参考:http://www.cnblogs.com/yeahgis/p/4660873.html