基于腾讯X5内核的混合APP开发模式

这是一个移动互联的时代,这是一个属于Android,属于iOS的时代,在响应大众创业万众创新的号召下,越来越多的开发者转向了移动开发的领域。在Android,iOS刚刚兴起的时候,对于开发者而言,要开发一整套完整的App是一件相对困难的事情,因为假如需要支持的移动系统越多,需要学习的编程语言、开发平台也就越多。例如你需要学习Java从而开发Android,你需要学习Object-C从而开发iOS。

这也就是所谓的原生开发模式,相信早期进入移动开发的程序员们对原生开发模式之痛深有感触,虽然体验感性能都非常的好,但复杂的开发维护成本令不少开发者不胜其烦。H5相关技术的流行给程序员带来了福音,因为通过H5制作的前端页面具有先天的跨平台性,这样我们就可以在一套统一的界面下实现不同移动系统的交互了,这就是现在流行的Web App以及Hybrid App开发模式.当前相对于纯粹的Web App而言,HybridApp 具有更强大的能力,2者的比较请见下图:

从图中可见,Hybrid App相对WebApp最主要的能力就在于可以通过一些中间件调用到手机底层的物理设备,例如传感器,摄像头等等,增强与用户的交互性。而WebApp只是一个纯粹的html界面,更主要是做数据的呈现而已。但不管是Hybrid App还是WebApp,在手机设备上面运行的时候都是借助WebView组件来对h5界面进行渲染展示的,所以可以这样说,WebView的能力直接决定了Hybrid / WebApp的前端交互能力。相信很多直接使用默认WebView组件呈现h5的开发者都有一种直观的感觉,就算h5页面中图片与文本信息并不多,但在WebView中展示的时候都会出现拖拽不流畅,切换留白,窗口闪烁等的现象,这就是WebView自身渲染能力不强的问题所致。今天这编文章不打算细致分析WebView内核的实现,而是引导读者如何使用腾讯的X5内核去替代系统内置的WebView,解决手机系统默认WebView能力不足的状况。

腾讯X5浏览服务是致力于优化移动端WebView体验的解决方案,由QQ浏览器团队出品,使用腾讯X5浏览服务内核SDK和腾讯X5浏览服务云端服务,解决移动端WebView使用过程中出现的拖拽不流畅,切换留白,窗口闪烁等问题。经过笔者测试, 性能提升比较明显, 对采用WebApp与HybridApp开发模式的程序员来说是一个非常值得推荐的选择,它的具体优点有:

1)速度快:相比系统WebView的网页加载速度有近30%的提升

2)省流量:云端优化技术使流量节省20%

3)更安全:24小时安全问题解决机制

4)更稳定:经过亿级用户的使用考验,crash率0.15%

5)集成强大的视频播放器,支持各种视频格式直接打开

6)适屏排版、字体设置等浏览增强功能的提供

(注意,Appcan原先的h5界面假如直接在X5内核中展示,默认情况下会影响原先的排版布局的,需要借助viewport进行重新排版.在注意事项中有说明)

7)HTML5更完整支持

8)无系统碎片化问题、更少的兼容性问题

下面我们来引导一下这个内核的使用方式。

1. 首先我们应该先访问http://x5.tencent.com/,点击导航栏中的"开发者后台"功能.

2. 利用自己的QQ账号进行登录

3. 登录完毕后,填写信息登记

4. 填写完毕后,就可以进入开发者后台了

5. 点击"添加"按钮,新建应用, 设置应用相关信息,提交后将得到应用的Appke

6. 访问http://x5.tencent.com/doc?id=1004,这是接入指南,建议程序员多看,但想吐槽一下,即便是一线服务商了,但百度也好,腾讯也好在开发文档完善性方面还是要有待加强,否则程序员就要耗费更多的时间精力进行摸索.

7. 下载Android SDK以及接口示例,过程不表

8. 点击"接入文档",按要求操作:

1) 复制sdk jar到工程的libs目录下

2) 对原先项目中所有与WebView组件相关的类库进行替换,更换为腾讯 WebView相关组件.替换规范为

如我项目代码所示,这是更换后的结果:

3) 替换layout布局文件中的WebView,改为腾讯的WebView. 如我项目代码所示,这是更换后的结果:

4) 声明权限,下面是涉及到的所有权限

"Android.permission.INTERNET"/>

"Android.permission.ACCESS_NETWORK_STATE"/>

"Android.permission.WRITE_EXTERNAL_STORAGE"/>

"Android.permission.ACCESS_WIFI_STATE"/>

"Android.permission.ACCESS_NETWORK_STATE"/>

"Android.permission.READ_PHONE_STATE"/>

"Android.permission.READ_SETTINGS"/>

"Android.permission.WRITE_SETTINGS"/>

"Android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

"Android.permission.READ_EXTERNAL_STORAGE"/>


"Android.permission.GET_TASKS"/>

5) 在Application标签中声明Appkey.

Android:name="QBSDKAppKey"

Android:value="ohhDlM1XPcmVpSYpWZWJAQat"/>

9. 大功告成, 以下是注意事项说明:

1) 假如我们自己开发的页面是基于Appcan的,需要把viewport修改为下面的形式,否则样式会变小

2) 在设置启动Javascript之前先设置js服务类,测试发现不是这个顺序的话会找不到服务类对象

WebView.addJavascriptInterface(newProductsInfoActivityJSService(

this),"Javahelper");   // 这在前

WebView.getSettings().setJavaScriptEnabled(true);  // js启动在后

3) 在腾讯的WebView中,数据类型监测更加严格.例如服务类中某个方法假如参数类型设置为String的话,那么js调动这个方法的时候需要注意好类型的匹配

如:

服务类方法-参数为String:

@JavascriptInterface

publicvoidshowProductById(String id){

Intent i =newIntent(context, ProductInfoActivity.class);

i.putExtra("pid", id);

context.startActivity(i);

}

js调用此方法-需要确保参数也为string:

functionloadProductByCID(cid){

cid=cid.toString();

Javahelper.showProducts(cid);// 调用服务类完成窗口的跳转

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,412评论 25 707
  • 关于这份调研报告,不是从技术角度深入探索,重点是从产品本身分析,通俗易懂才是重点。主要是为了锻炼平时做技术调研和竞...
    石先阅读 23,279评论 13 48
  • 上周项目有需要,集成了“腾讯X5浏览器内核”过程中,也遇到了一些问题。经过摸索,也顺带补充解决了之前ABI方面的理...
    tomguan阅读 27,161评论 13 27
  • 最基础的使用方法 最简单的布局: 在Activity中使用WebView: 但只是这样的话,在模拟器上是会直接调到...
    HolenZhou阅读 7,778评论 12 33
  • 在受到了太多的误解之后,和阴郁宫廷范儿的哥特音乐比起来,朋克虽然是摇滚乐众多流派之母,但他可不是娘娘腔。 朋克音乐...
    maofay阅读 294评论 0 1