mapbox / mapbox-navigation-android

Mapbox Navigation SDK for Android
https://docs.mapbox.com/android/navigation/overview/
Other
621 stars 319 forks source link

Example app crash on Emulator API 19: IllegalStateException: Expected Android API level 21+ but was 19 #2684

Closed JunDai closed 4 years ago

JunDai commented 4 years ago

Android API: OS 19 Mapbox Navigation SDK version: 1.0.0

Steps to trigger behavior

  1. Launch the example app on Android 19 Emulator
  2. Go to Navigation UI SDK
  3. Launch Navigation View example UI

Expected behavior

Navigation View activity starts correctly

Actual behavior

App crashes, with below stack trace:


Process: com.mapbox.navigation.examples, PID: 3448
    java.lang.ExceptionInInitializerError
        at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263)
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229)
        at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015)
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:71)
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:50)
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:40)
        at com.squareup.picasso.Picasso$Builder.build(Picasso.java:848)
        at com.mapbox.navigation.ui.instruction.ImageCreator.initializePicasso(ImageCreator.java:127)
        at com.mapbox.navigation.ui.instruction.ImageCreator.initialize(ImageCreator.java:84)
        at com.mapbox.navigation.ui.instruction.InstructionView.onFinishInflate(InstructionView.java:171)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:764)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.mapbox.navigation.examples.core.InstructionViewActivity.onCreate(InstructionViewActivity.kt:91)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
        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:5017)
        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:263) 
        at okhttp3.OkHttpClient.<init>(OkHttpClient.java:229) 
        at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015) 
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:71) 
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:50) 
        at com.squareup.picasso.OkHttp3Downloader.<init>(OkHttp3Downloader.java:40) 
        at com.squareup.picasso.Picasso$Builder.build(Picasso.java:848) 
        at com.mapbox.navigation.ui.instruction.ImageCreator.initializePicasso(ImageCreator.java:127) 
        at com.mapbox.navigation.ui.instruction.ImageCreator.initialize(ImageCreator.java:84) 
        at com.mapbox.navigation.ui.instruction.InstructionView.onFinishInflate(InstructionView.java:171)
JunDai commented 4 years ago

Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19 I doubt it's related to the dependency conflict. We specific use the okhttp 3.12.0 which still support API 19, but looks like picasso is using some higher version which doesn't support API 19.

Ref: okhttp drops API 19 from 3.13.0

cc: @mapbox/navigation-android

JunDai commented 4 years ago

@RingerJK , when you migrated our minSDK to 19 #2529 , have you gotten any chance to test our code on API 19 devices?

RingerJK commented 4 years ago

@JunDai nope, I didn't. I think it comes from https://github.com/mapbox/mapbox-java/issues/1127 .