Retrofit Logging Interceptor Exception

Ich versuche, die Protokollierung mit Retrofit zu aktivieren, erhalte jedoch die folgende Ausnahme:

07-13 12:44:53.278 28698-29248/com.xxxx.debug E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
                                                                                         Process: com.xxxx.debug, PID: 28698
                                                                                         java.lang.NoSuchMethodError: No virtual method log(Ljava/lang/String;)V in class Lokhttp3/internal/Platform; or its super classes (declaration of 'okhttp3.internal.Platform' appears in /data/data/com.xxxx.debug/files/instant-run/dex/slice-realm-optional-api_16b022358933b490d810e358ea76b13cd4d88163-classes.dex)
                                                                                             at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:109)
                                                                                             at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:157)
                                                                                             at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
                                                                                             at com.xxxx.api.RetrofitClient$1.intercept(RetrofitClient.java:59)
                                                                                             at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:190)
                                                                                             at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
                                                                                             at okhttp3.RealCall.access$100(RealCall.java:30)
                                                                                             at okhttp3.RealCall$AsyncCall.execute(RealCall.java:127)
                                                                                             at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
                                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                             at java.lang.Thread.run(Thread.java:818)

Und so mache ich es:

public class RetrofitClient {

    private static MyService instance;

    public static MyService getInstance(Context context) {
        if (instance == null) {
            instance = newInstance(context);
        }
        return instance;
    }

    private static MyService newInstance(Context context) {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(context.getString(R.string.base_url))
                .addConverterFactory(GsonConverterFactory.create())
                .client(getClient())
                .build();

        return retrofit.create(MyService.class);
    }

    @NonNull
    private static OkHttpClient getClient() {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor()
                .setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
                .addInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                        Request original = chain.request();

                        Request request = original.newBuilder()
                                .header("api-key", "...")
                                .header("version-app", "-")
                                .header("platform", "android")
                                .header("version", "-")
                                .header("device", "-")
                                .method(original.method(), original.body())
                                .build();

                        Response response = chain.proceed(request);// <-- CRASH

                        return response;
                    }
                })
                .addInterceptor(interceptor);

        return httpClient.build();
    }
}

Ich habe versucht, nur einen Abfangjäger hinzuzufügen, bin aber immer noch abgestürzt. Ich benutze diese Abhängigkeiten:

compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'

Was mache ich hier falsch?

BEARBEITENTja das ist peinlich ... das problem hat sich von selbst gelöst. Ich habe nichts geändert, ich überarbeite alle meine Commits und beidesRetrofitClient undbuild.gradle hat sich nicht geändert. Das Problem hing daher nicht mit Gradle-Abhängigkeiten oder -Versionen zusammen.

Zum Glück wird jemand etwas Licht auf diese Ausnahme werfen!

Antworten auf die Frage(8)

Ihre Antwort auf die Frage