Firebase Crashlytics在Android API 19触发Expected API 21+崩溃的原因及修复
崩溃根本原因
- 直接触发源是Crashlytics传递依赖的OkHttp:OkHttp 4.11.0及以上版本在
AndroidPlatform类的静态初始化逻辑中,新增了硬性API等级校验,检测到运行设备SDK <21时直接抛出IllegalStateException,与堆栈报错完全对应。 - 本地SDK 19 AVD未复现的原因:该崩溃触发链路是Crashlytics异步后台拉取远端配置时,才会初始化内置的OkHttpClient实例。手动测试时如果未等待该后台任务执行完成,或是本地依赖解析得到的OkHttp版本与线上构建产物的依赖版本存在差异,就会出现本地无复现、线上收到崩溃上报的情况。
- 未查询到Crashlytics官方minSdk限制的原因:Crashlytics本身官方兼容最低SDK 19,但未对传递依赖的OkHttp版本做兼容约束,导致高版本OkHttp的minSdk要求直接穿透到应用运行链路中。
可落地修复方案
- 方案1(保留API 19兼容,侵入性最低):强制将依赖树中的OkHttp版本降级到兼容API 19的版本,在app模块
build.gradle的dependencies块添加如下依赖声明:implementation("com.squareup.okhttp3:okhttp:4.10.0")
该版本OkHttp未新增上述硬性API校验,完全支持API 19及以上设备运行,可彻底避免该崩溃。 - 方案2(符合长期版本适配趋势):将应用的
minSdkVersion直接提升到21,匹配OkHttp高版本的最低运行要求。当前API 21以下的设备用户占比已极低,该调整不会造成明显的用户损失。
内容的提问来源于stack exchange,提问作者Lahiru Chandima
相关产品推荐
相关产品推荐

