java.lang.NoClassDefFoundError:retrofit2.Retrofit$Builder或retrofit2.BuiltInConverters

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>

 

然後問題就解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章