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。
首先尝试在 gradle 的 dependency 文件中将 1.1.0 版本退回到 1.1.0-rc01,跑了一下 ./gradlew :app:denepdencies
发现并没有用,因为其他 sdk 依赖了 1.1.0 的版本,gradle 的版本仲裁机制就是这样,永远取最新版。
怎么办?
好办,gradle 脚本可以强行指定版本:
编译安装跑一下,OK 没问题了。