Android編譯出現com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536錯誤解決辦法
阿新 • • 發佈:2018-12-14
踩過的坑, 以下操作,必須在app module中進行。
==========================================
**
Android編譯出現com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536錯誤解決辦法
**
今天在編譯專案時出現了這個錯誤,在我用真機進行執行的時候沒有這個錯誤,程式也可以跑起來,當我用模擬器,運存1G的執行時,突然就出現了這個錯誤,搞得我一臉懵逼。然後也查閱了相關部落格和網站。終於將這個問題解決了,感謝簡書上作者:Easyrealjs給予的幫助。
其實這個問題就是當你在工程中引入了多個第三方jar包,導致呼叫的方法數超過了android設定的65536個(DEX 64K problem),進而導致dex無法生成,也就無法生成APK檔案,也就無法運行了。
解決辦法如下:
一、在你app下的build.gradle新增如下:
android {
defaultConfig {
...
multiDexEnabled true
...
}
}
二、在你app下的build.gradle中的dependencies節點下新增如下:
dependencies { ... compile 'com.android.support:multidex:1.0.1' ... }
之後SYNC。
三、這一步驟要分幾種情況來講:
1、如果你的專案沒有使用自己定義的Application時,你需要在AndroidManifest.xml中的<Application中新增:
<application
android:name="android.support.multidex.MultiDexApplication"
</application>
- 1
- 2
- 3
2、如果你已經建立了,並且已經在使用了,如下:
將原來的:
public class TheApplication extends Application {
}
換成:
public class TheApplication extends MultiDexApplication {
}
3、如果你的Application繼承了其他類,比如有可能是你的Lib中的Application類,而且你不想去修改他的繼承,那麼,只需要修改他的attachBaseContext()方法即可.
public class MyApplication extends FooApplication{//FooApplication指其他類
@Override
protected void attachBaseContext(Contextbase){
super.attachBaseContext(base);
MultiDex.install(this);
}
}
原文出自: http://www.jianshu.com/p/396fbb6fe806
如果有需要,你可以看下這篇相對較深的文章:http://blog.csdn.net/t12x3456/article/details/40837287