当前位置: 首页 > 知识库问答 >
问题:

在react-native中打开webview时ClassNotFoundException

仲孙疏珂
2023-03-14
render() {
    console.log("URL in webview:" +this.props.navigation.state.params.url);
    return <WebView source={{ uri: this.props.navigation.state.params.url }} />;
}

但当我尝试打开一个URL时,它给出:

Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/TracingController; 
    at java.lang.Class java.lang.Class.classForName!(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:-2)
    at java.lang.Class java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (Class.java:400)
    at java.lang.Class android.webkit.WebViewFactory.getProviderClass() (WebViewFactory.java:349)
    at android.webkit.WebViewFactoryProvider android.webkit.WebViewFactory.getProvider() (WebViewFactory.java:194)
    at android.webkit.WebViewFactoryProvider android.webkit.WebView.getFactory() (WebView.java:2331)
    at void android.webkit.WebView.ensureProviderCreated() (WebView.java:2326)
    at void android.webkit.WebView.setOverScrollMode(int) (WebView.java:2385)
    at void android.view.View.(android.content.Context) (View.java:4007)
    at void android.view.View.(android.content.Context, android.util.AttributeSet, int, int) (View.java:4126)
    at void android.view.ViewGroup.(android.content.Context, android.util.AttributeSet, int, int) (ViewGroup.java:578)
    at void android.widget.AbsoluteLayout.(android.content.Context, android.util.AttributeSet, int, int) (AbsoluteLayout.java:55)
    at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:627)
    at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:572)
    at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:555)
    at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:542)
    at void android.webkit.WebView.(android.content.Context) (WebView.java:532)
    at void com.facebook.react.views.webview.ReactWebViewManager$ReactWebView.(com.facebook.react.uimanager.ThemedReactContext) (ReactWebViewManager.java:248)
    at com.facebook.react.views.webview.ReactWebViewManager$ReactWebView com.facebook.react.views.webview.ReactWebViewManager.createReactWebViewInstance(com.facebook.react.uimanager.ThemedReactContext) (ReactWebViewManager.java:357)
    at android.webkit.WebView com.facebook.react.views.webview.ReactWebViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext) (ReactWebViewManager.java:362)
    at android.view.View com.facebook.react.views.webview.ReactWebViewManager.createViewInstance(com.facebook.react.uimanager.ThemedReactContext) (ReactWebViewManager.java:86)
    at android.view.View com.facebook.react.uimanager.ViewManager.createView(com.facebook.react.uimanager.ThemedReactContext, com.facebook.react.touch.JSResponderHandler) (ViewManager.java:44)
    at void com.facebook.react.uimanager.NativeViewHierarchyManager.createView(com.facebook.react.uimanager.ThemedReactContext, int, java.lang.String, com.facebook.react.uimanager.ReactStylesDiffMap) (NativeViewHierarchyManager.java:224)
    at void com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute() (UIViewOperationQueue.java:153)
    at void com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(long) (UIViewOperationQueue.java:1006)
    at void com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(long) (UIViewOperationQueue.java:977)
    at void com.facebook.react.uimanager.GuardedFrameCallback.doFrame(long) (GuardedFrameCallback.java:31)
    at void com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(long) (ReactChoreographer.java:136)
    at void com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(long) (ChoreographerCompat.java:107)
    at void android.view.Choreographer$CallbackRecord.run(long) (Choreographer.java:871)
    at void android.view.Choreographer.doCallbacks(int, long) (Choreographer.java:685)
    at void android.view.Choreographer.doFrame(long, int) (Choreographer.java:618)
    at void android.view.Choreographer$FrameDisplayEventReceiver.run() (Choreographer.java:859)
    at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:754)
    at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
    at void android.os.Looper.loop() (Looper.java:165)
    at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6365)
    at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
    at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:883)
    at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:773)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.TracingController" on path: DexPathList[[zip file "/data/app/com.android.chrome-2/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-2/lib/arm,  /data/app/com.android.chrome-2/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]] ...

该代码适用于API级别28,但在API级别24中抛出以上错误。我搜索到类TracingController是在API level 28中引入的,我正在尝试在API 24中打开webview,但我不知道如何配置它以在API level 24中打开。

我的build.gradle文件:

defaultConfig {
        minSdkVersion 21
        targetSdkVersion com.amazon.brazil.android.SDK.platformVersion.toInteger()

任何关于如何打开WebView的提示,或者如何在API级别24中打开WebView?如果我在API级别24上运行,为什么它要尝试访问API级别28中引入的文件?

共有1个答案

龚鸿雪
2023-03-14

你很可能会看到在这个特殊的问题,所以回答。

基本上,根据Google的说法,它是在WebView changes for O+中引入的,并触发该消息在<=n设备上的WebView代码中被不正确地记录。这不是一个实际的错误,所以您可以忽略它。

在我的webview代码中,我为TracingController获得了完全相同的NCDFE,并且可以确认它没有不良影响。不幸的是,它的垃圾邮件日志消息,所以希望他们尽快修复它。

 类似资料:
  • 问题内容: 我在react-native中使用“ WebView”来呈现网页。该网页没有适合移动设备的用户界面。 当我在Chrome浏览器中打开它时,如下图所示。 我想像下面这样 但是,当我渲染下面的代码时,它看起来像下面的图像。请参阅我已经尝试了不同的道具,。但这并没有给我欲望输出。 结果 请随时提出任何解决方案。 任何第三方库也可以。 问题答案: 您的网站已在meta中设置了页面宽度 因此,您

  • 我正在尝试在react原生Android/iOS应用程序中播放Youtube视频。我定义了一个WebView: 并传递我要播放的视频的url: 但这将在webview中显示整个youtube页面,包括评论部分。

  • 我更换了笔记本电脑,克隆了项目的存储库,快速安装了一个纱线,看起来与主分支上的有很大的不同,但我没有费心,因为可能只是因为节点版本不同。 现在,每次我点击一个文本输入,键盘只会在android上立即打开和关闭。我在这里附上了一个快速录音。尝试了一些解决方案,看起来像是在AndroidManifest中将android:WindowsofInputMode从adjustResize切换到adjust

  • 我想在键盘打开时隐藏屏幕上的标签栏。我已经尝试过更改AndroidManifest.XML文件。通过将更改为,当键盘打开时,屏幕标签栏会隐藏,但问题是我现在的文本输入与键盘重叠,我也尝试过KeyBoardAvidingView,但它不起作用,因为当更改XML文件时,它也会影响其他应用程序组件。所以告诉我如何在键盘打开时隐藏标签栏而不更改XML文件。

  • 在react native中,如何获取webview中的某个标签的内容,例如: 在webview中,加载baidu.com,我要获取这个页面中选择器为#s_menu_mine的innerText. 这是我当前尝试的代码,gpt给我的,但是这并不能触发handleMessage,即使触发了,我也不确定方法内的代码是否正确,代码如下:

  • 我正在构建一个混合反应原生RubyonRails应用程序。我正在使用组件中的来检测页面中的更改,并使用它来更改react native navigation菜单。这很好,但当我尝试使用时,页面中可能会有更改,但不会触发。 使用以下代码触发导航状态更改 这可以正常工作,但如果我在ROR应用程序中打开TurboLink,则不再触发。 我该如何解决这个问题?