app开发webkit-c++ webkit 开发
app的四种开发模式:
1.原生App开发(Native App, 本地应用程序,包内页面);
2.网页应用程序(Web App,移动web,包内页面)。
3.采用Hybrid混合框架开发(Hybrid App,混合应用程序,云端一体);
4.采用ReactNative和WEEX等混合框架开发(混合App,包内页面)。
Native App、React Native App、WEEX App都是app内页面,无法实现动态修改页面,他们的人员要求是3,2,2(一种语言的人算1的算法)。
Web App基于底层WebKit,若是app内页面,也无法实现动态修改页面。人员要求是2。
Hybrid App是云端一体,所有页面都在云端,所以可以动态修改页面。人员要求是人员要求是2,但是前期需要iOS、android开发人员发布一个app壳。
。
只所以把Hybrid App和ReactNative App、WEEX App分类为两种不同的开发模式,是因为他们虽然都是混合app,但是Hybrid App是云端一体,页面都在云端,不在app包内;而ReactNative App、WEEX App都是传统的app包内页面,这个是他们的本质区别。
1)Native App
传统的原生APP开发模式,有iOS和android两大系统,需要各自语言开发各自APP。
优点:性能和体验都是最好的,实现华丽的动画,流畅度最好
缺点:开发和发布成本高。
人员需求:需要后台、iOS、android三个方面的专业人员进行一个后台和两个客户端的开发和调试,人员要求最多。
页面能否动态修改:客户端的代码包含在app包里,若增加功能或修改显示页面需要重新发布应用。不能动态修改页面。
举个例子:曹操专车,滴滴app
应用技术:Swift,Object C,JAVA
若是你对你应用的性能和用户体验要求很高,最好进行原生开发,原生开发没有技术限制。
2)WebApp
移动端的网站,常被称为H5应用,说白了就是特定运行在移动端浏览器上的网站应用。一般泛指 SPA(Single Page Application)模式开发出的网站,与MPA(Multi-page Application,再后面做介绍)对应。当然有的WebApp也有用js语言写的,采用webkit内核,用JNI调用底层C的接口。我2012年做的华为AnyOffice项目就是采用js写的WebApp。当时混合开发国内还不流行,为了实现跨平台所以采用了基于webkit的WebApp。
优点:开发和发布成本最低
人员需求:需要后台和 js前端开发专业开发人员,对iOS、android的技术要求很低,只要了解基本技术的非专业人员就行,人员要求很少。
缺点:性能和体验不能讲是最差的,但也受到浏览器处理能力的限制,多次下载同样会占用用户一定的流量
举个例子:第一版本的AnyOffice
页面能否动态修改:若客户端的代码包含在app包里,若增加功能或修改显示页面需要重新发布应用。不能动态修改页面。当然有的WebApp可能也是网页连接,那样也能实现动态修改页面,不过那样就越来越像Hybrid App了。
应用技术:ReactJS,RegularJS等
3)Hybrid App
混合模式移动应用,介于web-app、native-app这两者之间的app,兼具“Native App良好交互体验的优势”和“Web App跨平台开发的优势”(百度百科解释)
主要的原理是,由Native通过userContentController(JSBridge)等方法提供统一的API,然后用HTML+CSS实现界面,JS来写逻辑,调用API,最终的页面在WKWebview(UIWebview)中显示,这种模式下,Android、iOS的API一般有一致性,Hybrid App所有有跨平台效果。一般需要Android、iOS各做一个壳,后台会对他们两者进行不同的处理。
优点:开发和发布都比较方便,效率介于Native App、Web App之间。对Android、iOS技术要求不高,app的壳极少更新,找外包公司做就可以。做到app一年及以上不更新,页面随时可以更新。
人员需求:需要后台和 js前端开发专业开发人员(要求最高),对iOS、android的壳开发和升级外包就可以极少更新,人员需求很少。适合做公众好的公司再做app。人员要求比原生开发人员少三分之一,前期需要iOS、android开发人员发布一个app壳。
缺点:页面都在云端,第一次打开页面需要从云端拉去,速度不如原生的和RN等app慢;需要原生配合。
举个例子:网易云音乐,艺享微拍app(我做的应用,由于公司经营方向变更已经下线)
页面能否动态修改:app只封装一个主页面连接和js处理不了的处理,主要页面都是从服务器上动态拉去的,所以它的页面可以随时动态修改。
应用技术:PhoneGap,AppCan,Wex5,
除了要Android、iOS壳外,其它页面大都是一个连接。当然若js实现不了功能可以通过userContentController(JSBridge)直接调用原生的方法(如:图片传输过程中的预处理,图片上传,拍照)或跳转到原生的页面。能把原来的做公众号的页面快速转换成app页面,实现三端合一。多进程组件WKWebview要比多线程组件快三倍左右,建议使用WKWebview,但是由于WKWebview是多进程组件,存在cookie同步不及时的问题。通过NSURLProtocol进行页面地址拦截进行app的原生处理与图片下载与替换。由于WKWebview(UIWebview)具有缓存的功能,所以要想更新cs或js资源,js页面需要给他们的地址后加一个版本号,更新版本号对应的资源就重新加载了。由于Hybrid App的主页面是一个js页面连接,所以它可以实现类似APICloud的强大动态更新页面的功能。
APICloud是一款“云端一体”的移动开发平台,信仰“云端一体”的理念,重新定义了移动应用开发。APICloud为开发者从“云”和“端”两个方向提供API,简化移动应用开发技术app开发webkit,让移动应用的开发周期从一个月缩短到7天。APICloud由“云API”和“端API”两部分组成,可以帮助开发者快速实现移动应用的开发、测试、发布、管理和运营的全生命周期管理。每一个页面都带有自己的cookies,不经过登录入口直接访问页面,由于cookies不正确会打开页面失败。所以Hybrid App不是SPA网页,而是对网页访问合法性进行了严格校验的网页。
4)React Native App
Facebook发现Hybrid App存在很多缺陷和不足,于是发起开源的一套新的APP开发方案RN App。使用JSX语言写原生界面,js通过JSBridge调用原生API渲染UI交互通信。
优点:效率体验接近Native App,发布和开发成本低于Native App
人员需求:需要后台和 js前端开发专业开发人员,人员要求比原生开发人员少三分之一。
缺点:学习有一定成本,且文档较少,免不了踩坑
举个例子:Facebook、youtube、discord、QQ、百度等等
页面能否动态修改:由于客户端的代码包含在app包里,若增加功能或修改显示页面需要重新发布应用。它是对Hybrid App存在很多缺陷和不足来实现了一份js端代码代替Android、iOS两端的代码,并且打包到app包中。也正式它的页面都在app包中,提高了速度,但是失去了页面都在云端的优势,不能动态修改页面。
WEEX App
阿里巴巴开发团队在RN的成功案例上,重新设计出的一套开发模式,站在了巨人肩膀上并有淘宝团队项目做养料,广受关注,2016年4月正式开源,并在v2.0版本官方支持Vue.js,与RN分庭抗礼。
优点:开发效率和体验上跟RN不相上下,并且跨平台性更强
人员需求:需要后台和 js前端开发专业开发人员,人员要求比原生开发人员少三分之一。
缺点:刚刚起步,社区没有RN活跃
举个例子:淘宝、天猫、饿了么等
页面能否动态修改:由于客户端的代码包含在app包里,若增加功能或修改显示页面需要重新发布应用。它是对Hybrid App存在很多缺陷和不足来实现了一份js端代码代替Android、iOS两端的代码,并且打包到app包中。也正式它的页面都在app包中,提高了速度app开发webkit,但是失去了页面都在云端的优势,不能动态修改页面。当然热更新被苹果禁止了,不算热更新的页面动态修改。
WEEX App和React Native App都是app内页面,他们的有缺点相当,不过React Native App普及率较高,WEEX App一般只阿里自己再使用。