首页 > 解决方案 > 仅在 API 21 和 22、WebView 和 Consent SDK 上崩溃 - Resources$NotFoundException

问题描述

我们从 Galaxy S6、Android 5.0.2 上的测试人员那里得到了这个崩溃。Android 系统 WebView 37 (1726107-arm64) Google Play Services 19.0.56 (020400-263933554) Google Play Store 16.5.30-all [0] [PR] 267441717

如何重现(除了上面的设备):Android studio, emulator Android SDK 为 x86_64 api 21 和 22 构建。22 以上没有崩溃。在相同的设备上,WebView 崩溃并显示类似的消息。它不会因 Android Developers示例中的测试发布者 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.access$100 + 97(WebViewChromium.java:97)
    at com.android.webview.chromium.WebViewChromium$1.run + 264(WebViewChromium.java:264)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue + 124(WebViewChromium.java:124)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.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.access$300 + 64(MainActivity.java:64)
    at ro.coopabnd.cegatim.activities.MainActivity$2.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.access$600 + 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)

标签: androidandroid-webview

解决方案


该问题与 library 相关联androidx.appcompat:appcompat:1.1.0
如果你降级到1.0.2or 1.1.0-beta01,它又可以工作了。


推荐阅读