您的位置:首页 > 其它

hybrid混合开发初尝

2015-08-12 01:26 183 查看

hybrid混合开发初尝

>这是我第一次写markdown博客,也算是一种尝试吧。
小菜鸡一枚,以下内容写的不好的,求轻喷。

hybrid一直都是很热门的话题,简单的说,纯native开发固然体验好但是开发成本高,迭代周期长,某商店还需要审核周期,并不能做到热更新,那么某些轻量级的需求,尤其是总是会变动的界面以及数据显示等,用native就会比较麻烦;纯web app成本确实相对低,但是体验确实不太好,太依赖网络了,而且纯web app能调用的api是跟不上native速度的,也就是说,例如iOS8更新了4000+个API,那么等web跟上这个脚步那不知道要多长时间。这个时候,一种折中的方案——混合开发(hybrid)就出现了。

我理解的混合开发是这样的:

native:原生主要的任务是提供底层API支持和APP对性能、交互等要求比较高的用原生来完成;

h5:这部分主要是用于变化较大、经常改动、对热更新要求较高的业务需求,类似APP的“通知中心”等;

bridge:桥的作用主要是将native和h5链接起来,提供一个管道供二者安全的相互调用。

在公司做小业务,其中一个需求丢到我这里:APP的通知中心开发,这部分leader让上hybrid,于是我还自己看了一些介绍hybrid的链接,最后选择了(当然是leader拍板的)cordova解决方案。cordova是phonegap的开源版本,现在是Apache下的顶级项目,相对成熟稳定,所以我必须没有意见,于是就去踩坑了,原谅我菜并没有做过类似的东西。

简单的说,cordova提供了Android(我是Android开发工程师)下的webview控件——cordovawebview支持,同时提供了cordovaActivity,然后cordova有一套plugin,是让native和h5交互的管道。这里提一下,由于Android4.2以下addjavascriptinterface的安全性问题,cordova对4.2以上和4.2以下分别作了处理:4.2以上继续使用addjavascriptinterface,4.2以下则使用prompt方式,详细细节请看上述链接。

这部分主要由我和一位web前端同事负责(原谅我太菜不会写js)。native这边主要是封装好原生业务逻辑和提供给h5的方法调用接口,然后通过cordovaplugin和h5进行交互,只要

public xxxClass extend CordovaPlugin

就可以继续写了,我这边还是比较简单的我觉得,因为我是用cordovawebview嵌入到一个fragment里,所以在插件类中,我都是用EventBus分发事件,然后在需要处理的时候订阅处理就行。h5那边我感觉写懵逼了,因为也没有类似经验吧,cordova.exec没封装就直接写出来了,然后在cordova.js没load完的时候,exec方法是not find的,然后同事采取的方案简单粗暴——直接setTimeout,啊哈哈最后写到他自己逻辑都乱了……我看了看官方文档,正确的做法应该是监听cordova的ondeviceready事件,然后在回调用做cordova相关的操作,这时候cordova.js就会load好了。

其实也不知道写了些什么,整个过程就是这样了……

后续这部分我们几个人同事讨论了下,还是采取自己写cordova插件,然后用过cli去安装,这样在js代码中就不会出现exec这种东西了……这部分主要都是给js调原生API用的。慢慢丰富起来我们自己的业务逻辑插件就好啦~

>一枚Android开发小菜鸡 落笔
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: