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 腳本可以強行指定版本:
configurations.all {
resolutionStrategy {
force 'androidx.appcompat:appcompat:1.1.0-rc01'
}
}
編譯安裝跑一下,OK 沒問題了。