Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error on retrofit when add dependencies of okhttp #4622

Closed
dennykurniawan48 opened this issue Feb 15, 2019 · 11 comments
Closed

Error on retrofit when add dependencies of okhttp #4622

dennykurniawan48 opened this issue Feb 15, 2019 · 11 comments
Labels
bug Bug in existing code

Comments

@dennykurniawan48
Copy link

dennykurniawan48 commented Feb 15, 2019

Hello, when I am using Retrofit without Okhttp dependencies, its working fine, but when I want to add okhttp for logging to my dependencies.
It show error in my logcat:

EXCEPTION: main
    Process: com.myapp., PID: 2687
    java.lang.ExceptionInInitializerError
        at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:296)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:262)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:235)
        at retrofit2.Retrofit$Builder.build(Retrofit.java:580)
        at com.myapp..fragment.LoginFragment.onCreate(LoginFragment.java:73)
        at android.support.v4.app.Fragment.performCreate(Fragment.java:2414)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
        at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1195)
        at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:1078)
        at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:117)
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2408)
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
        at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
        at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:620)
        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188)
        at android.app.Activity.performStart(Activity.java:5241)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2243)
        at android.app.ActivityThread.access$800(ActivityThread.java:135)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5019)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19
        at okhttp3.internal.platform.AndroidPlatform.buildIfSupported(AndroidPlatform.java:238)
        at okhttp3.internal.platform.Platform.findPlatform(Platform.java:202)
        at okhttp3.internal.platform.Platform.<clinit>(Platform.java:79)
        at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:296) 
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:262) 
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:235) 
        at retrofit2.Retrofit$Builder.build(Retrofit.java:580) 
        at com.myapp.fragment.LoginFragment.onCreate(LoginFragment.java:73) 
        at android.support.v4.app.Fragment.performCreate(Fragment.java:2414) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418) 
        at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1195) 
        at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:1078) 
        at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:117) 
        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2408) 
        at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) 
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) 
        at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273) 
        at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229) 
        at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201) 
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:620) 
        at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178) 
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188) 
        at android.app.Activity.performStart(Activity.java:5241) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2166) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2243) 
        at android.app.ActivityThread.access$800(ActivityThread.java:135) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:136) 
        at android.app.ActivityThread.main(ActivityThread.java:5019) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:515) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
        at dalvik.system.NativeStart.main(Native Method) 

No problem when I using retrofit only

@dennykurniawan48 dennykurniawan48 added the bug Bug in existing code label Feb 15, 2019
@dennykurniawan48 dennykurniawan48 changed the title Error when add dependencies of retrofit and okhttp Error on retrofit when add dependencies of okhttp Feb 15, 2019
@JakeWharton
Copy link
Member

OkHttp 3.13 requires Java 8. You need to enable it in your build configuration. See: #4597 (comment)

@dennykurniawan48
Copy link
Author

dennykurniawan48 commented Feb 16, 2019

Thanks for your reply sir, I have added this

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

to my build gradle file, but I still have same error output. Is there any additional step for this?

@JakeWharton
Copy link
Member

JakeWharton commented Feb 16, 2019 via email

@dennykurniawan48
Copy link
Author

dennykurniawan48 commented Feb 16, 2019

I put inside android block sir, if I put it outside there Gradle error.

@rockfirm
Copy link

okhttp above 3.13 has a problem with Android4.4( about ssl ), so use 3.12.1( or under) prevent this problem.

@pdapnz
Copy link

pdapnz commented Feb 20, 2019

Same problem.

This is because:

OkHttp [starting from 3.13] works on Android 5.0+ (API level 21+) and on Java 8+.

https://medium.com/square-corner-blog/okhttp-3-13-requires-android-5-818bb78d07ce

The only way is use OkHttp 3.12.x if your minSDK lower 21.

P.S. It is not clear why the OkHttp developers did not raise the major version, given such major changes.

@jenmo917
Copy link

+1

@DDihanov
Copy link

If you guys are still crashing on Android 4 using the latest 2.7.1 Retrofit version, after setting the source and target compability version to 1.8 force the old OkHttp version like this, and it should work:

implementation("com.squareup.retrofit2:retrofit:2.7.1")

implementation("com.squareup.okhttp3:okhttp:3.12.8") {
    force = true
}

implementation "com.squareup.okhttp3:logging-interceptor:3.12.8"

@doctor-henry
Copy link

Just downgrade Retrofit to 2.7.0. The problem will go away.

@tas-wtag
Copy link

If you guys are still crashing on Android 4 using the latest 2.7.1 Retrofit version, after setting the source and target compability version to 1.8 force the old OkHttp version like this, and it should work:

implementation("com.squareup.retrofit2:retrofit:2.7.1")

implementation("com.squareup.okhttp3:okhttp:3.12.8") {
    force = true
}

implementation "com.squareup.okhttp3:logging-interceptor:3.12.8"

Thank you so so much!

@gilberty227
Copy link

Update version OK-Https

implementation ("com.squareup.okhttp3:okhttp:4.9.0")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Bug in existing code
Projects
None yet
Development

No branches or pull requests

9 participants