android studio 中 java.lang.NoClassDefFoundError:retrofit2.Retrofit$Builder錯誤解決或java.lang.NoClassDefFoundError: retrofit2.BuiltInConverters錯誤解決方法
此問題在android5.0以上不會出現,在android4.0-4.4會出現。
引起該問題的原因是:
項目比較大,還引用了一些第三方的包,所以導致Dex文件方法數超過限制,無法編譯,於是我在Module的build.gradle中設置了multiDexEnabled true,這樣就不會提示方法數超限。但是4.0+的Android系統依然無法編譯運行,報上面的錯誤。
一開始準備設置成false或者直接刪除這行,但是還會在4.0+手機出現下圖問題:
解決方法:
1. 在Module的build.gradle中設置了multiDexEnabled true
2. 在Module的build.gradle中添加
compile 'com.android.support:multidex:1.0.2' 或者手動下載該jar包放在libs中.
3. 修改自己應用的入口Application,讓其繼承MultiDexApplication,並重寫attachBaseContext方法。
public class myApplication extends MultiDexApplication {
}
4.如果你無法繼承MultiDexApplication,也可以在該application中重寫attachBaseContext()方法,並添加MultiDex.install(this);
5.如果你的應用沒有自定義Application方法,可以直接在AndroidManifest.xml清單文件中做如下聲明:
<application
......
android:name="android.support.multidex.MultiDexApplication">
......
</application>
然後問題就解決了。