【发布时间】:2020-12-02 04:17:02
【问题描述】:
Firebase crashlytics 在我的 Android 应用中报告了以下崩溃。
Caused by java.lang.IllegalStateException: Expected Android API level 21+ but was 19
at okhttp3.internal.platform.AndroidPlatform.<clinit>(AndroidPlatform.kt:205)
at okhttp3.internal.platform.Android10Platform.<clinit>(Android10Platform.kt:65)
at okhttp3.internal.platform.Platform$Companion.findPlatform(Platform.kt:201)
at okhttp3.internal.platform.Platform$Companion.access$findPlatform(Platform.kt:169)
at okhttp3.internal.platform.Platform.<clinit>(Platform.kt:170)
at okhttp3.OkHttpClient.<init>(OkHttpClient.kt:220)
at okhttp3.OkHttpClient.<init>(OkHttpClient.kt:212)
at com.google.firebase.crashlytics.internal.network.HttpRequest.<clinit>(HttpRequest.java:43)
at com.google.firebase.crashlytics.internal.network.HttpRequestFactory.buildHttpRequest(HttpRequestFactory.java:43)
at com.google.firebase.crashlytics.internal.common.AbstractSpiCall.getHttpRequest(AbstractSpiCall.java:113)
at com.google.firebase.crashlytics.internal.settings.network.DefaultSettingsSpiCall.invoke(DefaultSettingsSpiCall.java:80)
at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:200)
at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:193)
at com.google.android.gms.tasks.zzp.run(:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
at java.lang.Thread.run(Thread.java:841)
可以看出crashlytics本身已经发生了crash。我的应用的最低 android SDK 版本为 19,看起来 crashlytics 预计最低 sdk 级别为 21。
我使用 SDK 19 在 AVD 上测试了该应用,但该应用没有崩溃。另外,我在 crashlytics 文档中也找不到最低 SDK 版本限制。
这个问题的原因是什么?有什么办法可以解决吗?
【问题讨论】:
-
如果您有 Firebase 产品的错误报告,您应该通过Firebase support 或GitHub 提交。
-
您使用的是什么版本的 OkHttp? OkHttp 3.13 raised the minSdkVersion to 21.
-
@ianhanniballake 我没有在我的代码中使用 OkHttp。可能是 crashlytics 对它有依赖。
-
你的gradle dependencies的输出是什么?
-
@ianhanniballake 谢谢。我可以找到 OkHttp 的两个依赖项,一个通过
firebase-crashlytics链接到okhttp:3.12.1,另一个通过nitrite链接到okhttp:4.3.1。我认为 OkHttp 的 min SDK 升级是在 3.13 版本中完成的,所以niterite所依赖的较新版本应该是问题所在。知道如何防止通过nitrite依赖获取这个新版本吗?
标签: android firebase crashlytics