Android SDK 太不让人省心了,正式版本居然也埋雷。

前段时间把 support 升级到了 androidx,appcompat 自动升级了新版本 ​​androidx.appcompat:appcompat:1.1.0​​。

简单回归了下功能就发上线了,结果在在 5.1 的系统上发生了大规模的 crash,抛出的异常是找不到资源。

java.lang.RuntimeException: Unable to start activity ComponentInfo{}:
android.content.res.Resources$NotFoundException: String resource ID #0x2040003

拿到错误栈就好说了,无脑 Google 一下,很多人都遇到了这个问题,issue tracker 上有人已经提交了​​这个 bug​​。

解决 appcompat 1.1.0 导致 webview crash 的问题_Android


首先尝试在 gradle 的 dependency 文件中将 1.1.0 版本退回到 1.1.0-rc01,跑了一下 ​​./gradlew :app:denepdencies​​ 发现并没有用,因为其他 sdk 依赖了 1.1.0 的版本,gradle 的版本仲裁机制就是这样,永远取最新版。

怎么办?

好办,gradle 脚本可以强行指定版本:

configurations.all {
resolutionStrategy {
force 'androidx.appcompat:appcompat:1.1.0-rc01'
}
}

解决 appcompat 1.1.0 导致 webview crash 的问题_android_02


编译安装跑一下,OK 没问题了。

解决 appcompat 1.1.0 导致 webview crash 的问题_java_03