2016-07-13 21 views
21

Ben Retrofit ile açılıyor etkinleştirmek için çalışıyorum ama bu durum alıyorum:Uyarlama günlüğü önleme istisna

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) 

Ve bunun ne kadar Yapıyorum:

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

Ben sadece ekleyerek denedim Bir engelleyici ama yine de çöküyor. Bu bağımlılıkları kullanıyorum: Burada yanlış olan ne yapıyorum?

DÜZENLEME: Bu utanç verici ... sorun kendini çözdü. Hiçbir şey değiştirmedim, tüm taahhütlerimi revize ediyorum ve hem RetrofitClient hem de build.gradle değişmedi. Bu nedenle sorun, gradle bağımlılıkları veya versiyonları ile ilgili değildi.

Neyse ki birisi bu özel duruma ışık tutacaktır!

cevap

6

aşağıdaki bağımlılık

compile 'com.squareup.okhttp3:okhttp:3.4.1' 

eklemek Ve ayrıca bu link başvurabilir herhangi bir ilerleme

varsa bana bildirin deneyebilir miyim.

38

Güçlendirme 2.1.0 OkHttp 3.3.0 dayanır, bu yüzden (OkHttp parçasıdır) Günlük keseni için aynı sürümünü kullanmak olacaktır:

compile 'com.squareup.okhttp3:logging-interceptor:3.3.0' 
1

Benim durumumda bağımlılıkları bu çifti çözüldü sorun:

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.okhttp3:logging-interceptor:3.3.1' 

Neyse, sorun ...

bağımlılık tutarlılık içindedir