首页 > 系统 > Android > 正文

Android WebView 内核适配——WebKit 转 chromium

2019-11-09 13:54:17
字体:
来源:转载
供稿:网友
年刚过,一回来bug来袭,年前提前回家过年了,来了之后同事告诉我Android 4.4以下的手机H5加载不出来,暂时来不及解决直接就上线了,顿时满脸黑线,这都可以,我不在的时候都发生了啥? 于是乎,调试模式打开,拿了一个华为的4.0的手机测试,乖乖,果然空空的页面,毛线都没有一根,Log显示如下:Viewport argument key "minimal-ui" not recognized and ignored 度娘和谷歌儿子查一遍再说 大致的结果是谷歌这孙子杀千刀的在4.0之前一直用的是webkit内核做的移动端引擎支持,而4.0之后就换成了chromium做内核了,其原因必然是因为H5越来越普及才这么搞得,然而,问题不在这里,问题是这孙子没有做向下版本兼容解决方案,什么世道啊,4.0的手机还是很多的好吧!老板让解决问题只要结果好吧! 传统系统内核(Webview)存在适配成本高、不安全、不稳定、耗流量、速度慢、视频播放差、文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题。于是乎这会儿咱们的马化腾同学闪亮登场,话说BAT还真是做了点儿实事儿哈!腾讯浏览服务基于腾讯X5内核解决方案,能够有效解决传统移动web技术面临的普遍问题,同时能极大扩展应用(Hybrid App)内浏览场景的服务能力。 废话不多说,上解决方案: [官网地址](http://x5.tencent.com) [jar包下载地址](http://res.imtt.QQ.com/TES/tbs_sdk_thirdapp_v3.0.0.1038_43000_1485049870479.zip) 下载 SDK jar 包放到工程的libs目录下,将源码xml里的系统包和类替换为SDK里的包和类 注意,这里替换的只是所引用的WebKit源生类的包路径,类名都不动,这也方便了批量替换。 需要注意的是: 1)请不要在代码里使用下述写法: import android.*; import android.webkit.*; import android.webkit.WebStorage.*; import android.net.*; import android.net.http.*; 2)除了源码里需要把相关的包名和类名进行替换,布局xml里的声明也需要替换,例如: <com.tencent.smtt.sdk.WebView android:id="@+id/forum_context" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="5dp" android:paddingRight="5dp" /> 适配修改: 1. App 首次就可以加载 x5 内核 App 在启动后(例如在 application 的 onCreate 中)立刻调用 QbSdk 的预加载接口 initX5Environment , 可参考接入示例,第一个参数传入 context,第二个参数传入 callback,不需要 callback 的可以传入 null,initX5Environment 内部会创建一个线程向后台查询当前可用内核版本号,这个函数内是异步执行所以不会阻塞 App 主线程,这个函数内是轻量级执行所以对 App 启动性能没有影响,当 App 后续创建 webview 时就可以首次加载 x5 内核了 2. 目前,由于SDK WebView所提供的WebView类,是对系统WebView的聚合包装,所以:获取系统内核的WebView或者 x5内核的WebView的宽高 android.webkit.WebView webView = new android.webkit.WebView(this); int width = webView.getWidth(); 需要采用下面的方式进行 com.tencent.smtt.sdk.WebView webView = new com.tencent.smtt.sdk.WebView(this); int width = webView.getView().getWidth(); 至此我的问题测试过后是解决了,在倒包的过程中有一个是280KB的 有一个是100多kb的,建议用大的,免得别人拿着一个微信或者QQ告诉你为啥别人能实现这种效果你得不能,你们懂得...... 下一个介绍我在开发的时候遇到的WebView另外一个坑爹的坑,爬了好久才爬出来。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表