仅在 API 21 和 22、WebView 和 Consent SDK 上崩溃 - Resources$NotFoundException

Crash on API 21 and 22 only, WebView and Consent SDK - Resources$NotFoundException

我们从 Galaxy S6 Android 5.0.2 的测试人员那里得到了这个崩溃。 Android 系统 WebView 37 (1726107-arm64) Google 播放服务 19.0.56 (020400-263933554) Google Play 商店 16.5.30-全部 [0] [PR] 267441717

如何重现(除上述设备外):Android 工作室,模拟器 Android 为 x86_64 api 21 和 22 构建的 SDK。22 以上没有崩溃.在相同的设备上,WebView 崩溃并显示类似的消息。 它不会因 Android 开发人员 example

的测试发布者 ID ("pub-0123456789012345") 而崩溃
Fatal Exception: android.content.res.Resources$NotFoundException: String resource ID #0x3040002
    at android.content.res.Resources.getText + 1347(Resources.java:1347)
    at android.content.res.Resources.getString + 1441(Resources.java:1441)
    at com.android.org.chromium.content.browser.ContentViewCore.setContainerView + 702(ContentViewCore.java:702)
    at com.android.org.chromium.content.browser.ContentViewCore.initialize + 608(ContentViewCore.java:608)
    at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore + 619(AwContents.java:619)
    at com.android.org.chromium.android_webview.AwContents.setNewAwContents + 758(AwContents.java:758)
    at com.android.org.chromium.android_webview.AwContents.<init> + 608(AwContents.java:608)
    at com.android.org.chromium.android_webview.AwContents.<init> + 546(AwContents.java:546)
    at com.android.webview.chromium.WebViewChromium.initForReal + 312(WebViewChromium.java:312)
    at com.android.webview.chromium.WebViewChromium.access0 + 97(WebViewChromium.java:97)
    at com.android.webview.chromium.WebViewChromium.run + 264(WebViewChromium.java:264)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue + 124(WebViewChromium.java:124)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.run + 111(WebViewChromium.java:111)
    at com.android.org.chromium.base.ThreadUtils.runOnUiThread + 144(ThreadUtils.java:144)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask + 108(WebViewChromium.java:108)
    at com.android.webview.chromium.WebViewChromium.init + 261(WebViewChromium.java:261)
    at android.webkit.WebView.<init> + 557(WebView.java:557)
    at android.webkit.WebView.<init> + 492(WebView.java:492)
    at android.webkit.WebView.<init> + 475(WebView.java:475)
    at android.webkit.WebView.<init> + 462(WebView.java:462)
    at android.webkit.WebView.<init> + 452(WebView.java:452)
    at com.google.ads.consent.ConsentForm.<init> + 80(ConsentForm.java:80)
    at com.google.ads.consent.ConsentForm.<init> + 46(ConsentForm.java:46)
    at com.google.ads.consent.ConsentForm$Builder.build + 210(ConsentForm.java:210)
    at ro.coopabnd.cegatim.activities.MainActivity.requestConsent + 222(MainActivity.java:222)
    at ro.coopabnd.cegatim.activities.MainActivity.access0 + 64(MainActivity.java:64)
    at ro.coopabnd.cegatim.activities.MainActivity.onConsentInfoUpdated + 243(MainActivity.java:243)
    at com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute + 277(ConsentInformation.java:277)
    at com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute + 188(ConsentInformation.java:188)
    at android.os.AsyncTask.finish + 632(AsyncTask.java:632)
    at android.os.AsyncTask.access0 + 177(AsyncTask.java:177)
    at android.os.AsyncTask$InternalHandler.handleMessage + 645(AsyncTask.java:645)
    at android.os.Handler.dispatchMessage + 102(Handler.java:102)
    at android.os.Looper.loop + 145(Looper.java:145)
    at android.app.ActivityThread.main + 6141(ActivityThread.java:6141)
    at java.lang.reflect.Method.invoke(Method.java)
    at java.lang.reflect.Method.invoke + 372(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1399(ZygoteInit.java:1399)
    at com.android.internal.os.ZygoteInit.main + 1194(ZygoteInit.java:1194)

问题链接到库 androidx.appcompat:appcompat:1.1.0
如果您降级到 1.0.21.1.0-beta01,它又可以工作了。

由于将来许多库将依赖于 appcompat 1.1.0,因此我将把它留在这里 。它发生在 API 21 和 22 且 webview 版本 <50 的设备上。