androidx.appcompat:appcompat:1.1.0 引此 部分 Android L 使用 WebView 會 crash
android.content.res.Resources$NotFoundException: String resource ID #0x2040002
at android.content.res.Resources.getText(Resources.java:274)
at android.content.res.Resources.getString(Resources.java:360)
at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:702)
at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:619)
at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:758)
at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:608)
at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:546)
at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:312)
at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:97)
at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:264)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:124)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:111)
at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:108)
at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:261)
at android.webkit.WebView.<init>(WebView.java:548)
at android.webkit.WebView.<init>(WebView.java:483)
at android.webkit.WebView.<init>(WebView.java:466)
at android.webkit.WebView.<init>(WebView.java:453)
at android.webkit.WebView.<init>(WebView.java:443)
有些人認為是 AOSP 沒有 Google System WebView (com.google.android.webview) 導致呼叫錯誤
但有注意到
在 Android M+ Emulator 是可以正常 work
個人認為是 String resource ID #0x2040002 在打包時不知為何漏掉 Android L
所以報錯
不同版本 Android 對應預設 System WebView 版號
AOSP 的 WebView 預設是
com.android.webview可以參考 這篇 替換方法
將 WebView 預設 Package Name 由
com.android.webvie改為com.google.android.webview除了替換 WebView 預設 Package Name
更新
com.android.webview也是一個方案上面也說過在 Android M+ Emulator 是可以正常 work