appcompatのバージョンを1.1.0に上げた
appcompatのバージョンを上げて動作確認を行なっていた際にWebViewでコピーした内容を貼り付けようと長押ししたところ
クラッシュしてしまい原因を調査したため調査結果を記載
動作確認を行なった環境とクラッシュ状況
- Android5.1のemulator
- 起動した瞬間にクラッシュ
- Android6.0のemulator
- WebView内で長押しをするとクラッシュ
- Android7.0以降のemulator
- WebView内を長押ししてもクラッシュしない
- Android5.1の実機
- WebView内を長押ししてもクラッシュしない
クラッシュログ
W/System.err: at android.content.res.Resources.getValue(Resources.java:1351)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2774)
at android.content.res.Resources.getLayout(Resources.java:1165)
at android.view.MenuInflater.inflate(MenuInflater.java:108)
at org.chromium.content.browser.SelectActionModeCallback.createActionMenu(SelectActionModeCallback.java:153)
at org.chromium.content.browser.SelectActionModeCallback.onCreateActionMode(SelectActionModeCallback.java:124)
at com.android.webview.chromium.FloatingSelectActionModeCallback.onCreateActionMode(FloatingSelectActionModeCallback.java:32)
at com.android.internal.policy.PhoneWindow$DecorView$ActionModeCallback2Wrapper.onCreateActionMode(PhoneWindow.java:3531)
at com.android.internal.policy.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2772)
at com.android.internal.policy.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2729)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:812)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:812)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:812)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:812)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:812)
at android.view.View.startActionMode(View.java:5335)
at com.android.webview.chromium.WebViewContentsClientAdapter.startFloatingActionMode(WebViewContentsClientAdapter.java:432)
at com.android.webview.chromium.WebViewContentsClientAdapter.startActionMode(WebViewContentsClientAdapter.java:414)
at org.chromium.android_webview.AwContentViewClient.startActionMode(AwContentViewClient.java:73)
at org.chromium.content.browser.ContentViewCore.showSelectActionMode(ContentViewCore.java:2131)
at org.chromium.content.browser.ContentViewCore.onSelectionEvent(ContentViewCore.java:2203)
at org.chromium.android_webview.AwContents.nativeOnDraw(Native Method)
at org.chromium.android_webview.AwContents.access$4500(AwContents.java:92)
at org.chromium.android_webview.AwContents$AwViewMethodsImpl.onDraw(AwContents.java:2731)
at org.chromium.android_webview.AwContents.onDraw(AwContents.java:1191)
at com.android.webview.chromium.WebViewChromium.onDraw(WebViewChromium.java:1713)
at android.webkit.WebView.onDraw(WebView.java:2486)
at android.view.View.draw(View.java:16178)
調べてみた
Google Issue Trackerに同様の内容が投稿されていた
androidx.appcompat:appcompat 1.1.0 crashes webview when long pressed
https://issuetracker.google.com/issues/141351441
対応方法
appcompatのバージョンを「1.0.2」とする
または、現在bataが公開されている「1.2.0-beta01」を利用することで解消できる様子
※「1.2.0-beta01」のリリースノートに「WebView を長押しした際に、androidx.appcompat:appcompat:1.1.0 によって WebView がクラッシュする問題を修正しました」と記載されている
https://developer.android.com/jetpack/androidx/releases/appcompat?hl=ja#version_120_2
2020/09/24追記
2020/08/05にappcompatのバージョン「1.2.0」の正式版がリリースされているようですのでそちらを利用することで問題が解消されるようです。