首页 > 解决方案 > org.chromium.android_webview.AwContentsClientBridge$$Lambda$1.run 的 NoSuchMethod

问题描述

该问题来自我的应用程序中的 Crashlytics。在 MyApplication 中,我为显示站点显示 Webview。

-> 真的不知道如何重现这个问题。

这是来自 Crashlytics 的完整日志详细信息:

     Fatal Exception: java.lang.NoSuchMethodError: No static method b()I in class Landroid/net/http/SslError; or its super classes (declaration of 'android.net.http.SslError' appears in /system/framework/framework.jar)
   at com.google.android.gms.internal.ads.zzbhb.onReceivedSslError(zzbhb.java:229)
   at com.android.webview.chromium.WebViewContentsClientAdapter.onReceivedSslError(WebViewContentsClientAdapter.java:453)
   at org.chromium.android_webview.AwContentsClientBridge$$Lambda$1.run(AwContentsClientBridge.java:2)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:179)
   at android.app.ActivityThread.main(ActivityThread.java:5730)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:681)

Android:设备名称:华硕,Huwai,oppo Devie os:6.0.1,5.0

标签: javaandroidwebviewchromium

解决方案


也许你minifyEnabled true在你的 gradle 脚本中使用?

onReceivedSslError这是通过在 WebViewClient中覆盖来处理 ssl 错误的正确方法:

 override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
        if (activity != null) {
            AlertDialog.Builder(activity)
                    .setTitle(SSL + " " + activity.getString(R.string.error))
                    .setMessage(error.toString())
                    .setPositiveButton(activity.getString(R.string.go_on)) { _, _ ->
                        handler.proceed()
                    }
                    .setNegativeButton(R.string.cancel) { _, _ ->
                        handler.cancel()
                    }
                    .create()
                    .show()
        } else {
            handler.cancel()
        }
    }

更新了 KOTLIN 中的使用示例:

  webView.webViewClient = object: WebViewClient(){
                override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
                    if (activity != null) {
                        AlertDialog.Builder(activity)
                                .setTitle(BaseTopSportWebViewClient.SSL + " " + activity.getString(R.string.error))
                                .setMessage(error.toString())
                                .setPositiveButton(activity.getString(R.string.go_on)) { _, _ ->
                                    handler.proceed()
                                }
                                .setNegativeButton(R.string.cancel) { _, _ ->
                                    handler.cancel()
                                }
                                .create()
                                .show()
                    } else {
                        handler.cancel()
                    }
                }
            }


推荐阅读