Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform in Android

Runtime Execption java.lang.NoClassDefFoundError: retrofit2.Platform in Android

我在实施改造后使用 Rtofit 处理来自移动设备的服务器端数据我得到以下异常任何知道这个问题的人告诉我我哪里做错了

初始化改造:

mRetrofit = new Retrofit.Builder()
                    .baseUrl(AppConstance.APP_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
            Iservice = mRetrofit.create(IdeaService.class);

Gradle 文件

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
    compile 'com.squareup.okio:okio:1.7.0'
}

堆栈跟踪

   04-26 11:54:36.441 18355-18355/com.omt.example W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x41da0c98)
04-26 11:54:36.441 18355-18355/com.omt.example W/dalvikvm: threadid=1: uncaught exception occurred
04-26 11:54:36.442 18355-18355/com.omt.example W/System.err: java.lang.NoClassDefFoundError: retrofit2.Platform
04-26 11:54:36.444 18355-18355/com.omt.example W/System.err:     at retrofit2.Retrofit$Builder.<init>(Retrofit.java:402)
04-26 11:54:36.445 18355-18355/com.omt.example W/System.err:     at com.omt.example.utils.Idea.onCreate(Idea.java:79)
04-26 11:54:36.447 18355-18355/com.omt.example W/System.err:     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
04-26 11:54:36.448 18355-18355/com.omt.example W/System.err:     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4541)
04-26 11:54:36.449 18355-18355/com.omt.example W/System.err:     at android.app.ActivityThread.access00(ActivityThread.java:151)
04-26 11:54:36.450 18355-18355/com.omt.example W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1381)
04-26 11:54:36.451 18355-18355/com.omt.example W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:110)
04-26 11:54:36.451 18355-18355/com.omt.example W/System.err:     at android.os.Looper.loop(Looper.java:193)
04-26 11:54:36.452 18355-18355/com.omt.example W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:5292)
04-26 11:54:36.453 18355-18355/com.omt.example W/System.err:     at java.lang.reflect.Method.invokeNative(Native Method)
04-26 11:54:36.454 18355-18355/com.omt.example W/System.err:     at java.lang.reflect.Method.invoke(Method.java:515)
04-26 11:54:36.455 18355-18355/com.omt.example W/System.err:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
04-26 11:54:36.456 18355-18355/com.omt.example W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
04-26 11:54:36.457 18355-18355/com.omt.example W/System.err:     at dalvik.system.NativeStart.main(Native Method)
04-26 11:54:36.457 18355-18355/com.omt.example W/dalvikvm: threadid=1: calling UncaughtExceptionHandler

尝试将 okhttp 更改为 okhttp3

compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.2.0'

作为 retrofit2 在内部使用 okhttp3

尝试构建并同步 gradle。

我遇到了同样的问题。可能的解决方案(解决了我的问题):

1) 添加gradle依赖: compile 'com.android.support:multidex:1.0.0'(文件build.gradle)

2) 设置multiDexEnabled true(文件build.gradle)

3) 添加 android:name="android.support.multidex.MultiDexApplication"(文件 AndroidManifest.xml)

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:name="android.support.multidex.MultiDexApplication">
 </application>

将这些添加到您的服务中class

//创建OkHttpClient客户端

    Strategy strategy = new AnnotationStrategy();

    // Define the interceptor, add authentication headers
    Interceptor interceptor = new Interceptor() {
        @Override
        public okhttp3.Response intercept(Interceptor.Chain chain) throws IOException {
            Request newRequest = chain.request().newBuilder().addHeader("User-Agent", "Retrofit-Sample-App").build();
            return chain.proceed(newRequest);
        }
    };


    Serializer serializer = new Persister(strategy);

    OkHttpClient.Builder builder = new OkHttpClient.Builder();
    builder.interceptors().add(interceptor);
    OkHttpClient client = builder.build();

    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();

    httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    builder.networkInterceptors().add(httpLoggingInterceptor);
    builder.build();

    RxJavaCallAdapterFactory rxAdapter = RxJavaCallAdapterFactory.create();

    Retrofit retrofit = new Retrofit.Builder()
            .addConverterFactory(SimpleXmlConverterFactory.create(serializer))
            .addCallAdapterFactory(rxAdapter)
            .baseUrl(YellowTalkConstant.BASE_URL)
            .client(client)
            .build();

    try{
        this.mYellowTalkApi = retrofit.create(YellowTalkApi.class);
    }catch (Exception ex) {
        Log.e("Exception", ex.toString());
    }