
我是在更換應用的一個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
