2016-04-26 8 views
4

Ich benutze Rtofit zur Verarbeitung der Serverside Daten von Mobile Nach der Implementierung der Retrofit Ich bekomme die unten Ausnahme wissen Sie über dieses Problem sagen Sie mir, wo ich falsch gemacht wurdeRuntime Execption java.lang.NoClassDefFoundError: Retrofit2.Platform in Android

Init Retrofit:

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

Gradle Datei

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' 
} 

Stacktrace

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.access$1500(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 
+0

scheint es, dass es nicht die Platformclass.Try und – Asthme

+0

Ich habe versucht, zu bauen zu reinigen finden, die noch gleiche issue –

+0

Sie proguard verwenden? wenn ja, hast du proguard enteries hinzugefügt? –

Antwort

3

versuchen, die intern mit okhttp3okhttp zu okhttp3

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

Als retrofit2 ändern.

Versuchen Sie Build und Sync Gradle.

+0

und es gibt keine Notwendigkeit, okio Bibliothek in Gradlle.Since verwenden Nachrüstung verwendet intern, dass – Asthme

+1

funktioniert perfekt Danke Typ –

+0

@MuthuPandiyan Froh, Ihnen zu helfen. –

6

Ich hatte das gleiche Problem. Mögliche Lösung (feste mein Problem):

1) In gradle Abhängigkeit: compile 'com.android.support:multidex:1.0.0' (Datei build.gradle)

2) Set multiDexEnabled true (Datei build.gradle)

3) In android:name="android.support.multidex.MultiDexApplication" (Datei 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> 
+0

Dies war das Problem für mich. Meine App funktionierte nicht für 4.4, nur für 5.0 und später und das löste es. Vielen Dank. –

0

Fügen sie diese auf Ihre Service-Klasse

// erstellen OkHttpClient Client

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()); 
    }