Search code examples
androidreact-nativereact-native-webview

Crash on 64-bit armv8 device which have Mediatek MT6735P chipset with Cortex-A53 CPU


Crash on 64-bit armv8 devices with below stack trace. Checked with few different Android System WebView versions including latest beta version (77.0.3865.73).

To Reproduce: Create a project with react-native init AwesomeProject --0.60.5 Install the the react-native-webview using React Native WebView Getting Started Guide

Stack trace

E/unknown:ReactNative: Exception in native call
    android.content.res.Resources$NotFoundException: String resource ID #0x3040003
        at android.content.res.HwResources.getText(HwResources.java:1287)
        at android.content.res.Resources.getString(Resources.java:431)
        at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:709)
        at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:633)
        at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:685)
        at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:834)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:670)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:605)
        at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:319)
        at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:104)
        at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:271)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:131)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:118)
        at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:115)
        at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:268)
        at android.webkit.WebView.<init>(WebView.java:597)
        at android.webkit.WebView.<init>(WebView.java:531)
        at android.webkit.WebView.<init>(WebView.java:514)
        at android.webkit.WebView.<init>(WebView.java:501)
        at android.webkit.WebView.<init>(WebView.java:491)
        at com.reactnativecommunity.webview.RNCWebViewManager$RNCWebView.<init>(RNCWebViewManager.java:902)
        at com.reactnativecommunity.webview.RNCWebViewManager.createRNCWebViewInstance(RNCWebViewManager.java:154)
        at com.reactnativecommunity.webview.RNCWebViewManager.createViewInstance(RNCWebViewManager.java:160)
        at com.reactnativecommunity.webview.RNCWebViewManager.createViewInstance(RNCWebViewManager.java:104)
        at com.facebook.react.uimanager.ViewManager.createViewInstanceWithProps(ViewManager.java:119)
        at com.facebook.react.uimanager.ViewManager.createViewWithProps(ViewManager.java:66)
        at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:259)
        at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:198)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1036)
        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1007)
        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
        at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:172)
        at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:798)
        at android.view.Choreographer.doCallbacks(Choreographer.java:603)
        at android.view.Choreographer.doFrame(Choreographer.java:571)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:786)
        at android.os.Handler.handleCallback(Handler.java:815)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5667)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:962)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

Screenshots: enter image description here


Solution

  • Thanks @mike-hardy, He provides a workaround for this issue in gitHub

    Add below lines to your MainActivity.java

        // Workaround appcompat-1.1.0 bug https://issuetracker.google.com/issues/141132133
        @Override
        public void applyOverrideConfiguration(Configuration overrideConfiguration) {
            if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT <= 25) {
                return;
            }
            super.applyOverrideConfiguration(overrideConfiguration);
        }