解决用WebView去加载网页在部分手机上闪退问题
来源:互联网 发布:淘宝店banner尺寸 编辑:程序博客网 时间:2024/05/21 22:22
1.绪论
Binary XML file line #29: Error inflating class android.webkit.WebView…这种错误,你见过么?最近公司应用(云电脑)在各个应用市场比较火,用的人也多,在后台统计的错误日志里,出现了个奇葩的bug,它就是WebView加载网页闪退bug。大部分出现在一加、三星、OPPO手机中,不知道大家有没有遇到过,下面是错误详细信息:
android.view.InflateException: Binary XML file line #29: Error inflating class android.webkit.WebView at android.view.LayoutInflater.createView(LayoutInflater.java:620) at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:57) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:669) ...//由于篇幅原因,省略无关错误日志 Caused by: java.lang.UnsupportedOperationException at com.android.webview.nullwebview.NullWebViewFactoryProvider.createWebView(NullWebViewFactoryProvider.java:41) at android.webkit.WebView.ensureProviderCreated(WebView.java:2058) at android.webkit.WebView.setOverScrollMode(WebView.java:2116) at android.view.View.<init>(View.java:3461) at android.view.View.<init>(View.java:3517) at android.view.ViewGroup.<init>(ViewGroup.java:470) at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:52) at android.webkit.WebView.<init>(WebView.java:498)
下面是引用WebView的布局文件:
好可怕!WebView是系统api提供的,竟然会找不到!这个时候,好方…….
我们可能会想到手机系统出现问题了,有可能是用户刷系统了,或者用户把手机root后系统弄坏了,还有可能就是厂商定制的手机系统本身就存在问题。
2.解决思路
对于上面的猜想,归纳起来就是手机系统有问题了。我们可能想到的解决办法就是不用系统的webView,用第三方的网页加载库实现功能,比如腾讯提供的浏览器内核SDK,如果你需求只是用来加载网页,功能简单的话,这个是可行的,如果需要实现复杂的功能,那这个SDK也是会有很多坑,其中这个SDK不支持64位运行环境的。
刚猜测手机系统出现问题了,那为什么手机自带浏览器访问网页又没事呢?看来我们得去研究下自带浏览器了,我们拿出现过这个异常的手机把它root掉,然后拷出自带浏览器apk,进行反编译,查看源码…这个过程有些繁琐就不讲解了,直接说结果,结果如下:
手机自带浏览器也是用系统api的webView来实现加载网页的。
擦…你这不是在撮我么?那系统就没问题才对啊?
还没说完,别激动!
其实这个就可以说明系统还是有webView这个api的,我无意间看到手机自带浏览器的libs目录下发现没有64位库的文件夹如:arm64-v8a、mips64、x86_64,那这就说明这个应用只支持32位运行环境。由此 大概可以猜想我们应用为啥在这个手机上报错了。
首先,这个手机是支持64位的,然后我们应用也适配了64位运行环境,那我们应用就是在64位运行环境下运行,然而打开网页就报错了。
报错就说明系统提供的webView Api 只能在32位运行环境下运行,不兼容64位。
那么 这问题怎么解呢?
我们可以把应用里适配的64位系统的库和目录全删掉,试试…
经过验证,是没问题的,可以正常打开网页。不过让64位系统运行32位的应用,性能会有点点损失的。
到这里分析就结束了,如果有什么疑问,欢迎留言交流!如果没有的话就给笔者点个赞呗! ^_^
- 解决用WebView去加载网页在部分手机上闪退问题
- 解决在部分手机webview字体显示过小的问题
- webView网页部分加载控件
- webView在5.0以上手机加载网页不显示图片
- Android使用webview加载网页,解决上传文件适配3.0、4.0、5.0手机存在的问题。
- 解决原生webView无法加载部分格式视频的问题
- 解决webview加载网页出现白屏的问题
- 解决webview加载网页出现白屏的问题
- 解决WebView加载的网页被放大的问题
- 解决webview加载网页出现白屏的问题
- 解决网页在手机端显示界面很小的问题
- webview加载本地网页乱码问题
- android 使用webview加载网页问题
- iOSStroyBoard拖拽webView,加载网页前黑边问题
- Android WebView 加载网页遇到的问题
- 安卓加载webView只显示部分网页的方法
- webview重写 shouldOverrideUrlLoading,在部分手机上不能拦截?
- 解决Android Webview 加载一些网页出现白板现象
- Linux基础入门(五)--学习笔记-历史命令
- 垃圾收集器及GC调优
- 为什么要Time_wait
- 玄关什么意思
- 统计学简介之十二——一个总体参数的检验
- 解决用WebView去加载网页在部分手机上闪退问题
- 【分层实验框架】Google 重叠实验框架:更多,更好,更快地实验
- windows装pip出现的问题 (改字符编码引起的错误)
- Java学习笔记(9)-StringBuilder类二
- 数字信封原理
- Hadoop平台优化综述
- JVM的结构及内容分配
- HashMap中的indexFor方法分析
- 用jDB 调试Java程序