鸿蒙harmony-cordova研发方案详解
Harmony-Cordova Sdk,采用C/C++语言对webview的扩展研发,APP启动后,APP后端启动10个线程(线程池)负责数据网络请求;https(ssl/tls)请求使用session复用技术,图片、文件资源使用独立缓存;数据库、chcp等插件都采用多线程处理,file插件是对webview内核的修改,支持cdvfile,localhost等协议直接访问本地文件。说了很多框架底层
Android、Ios和HarmonyOS APP研发分析
Android研发语言Java、Ios研发语言objective-c, HarmonOS研发语言ArkTs和C/C++,写了第一句,就会有人反驳,Android和Ios也支持C/C++语言,封装成动态库so,然后调用就可以了,说的也没有错误,很多APP采用此方案。我这里主要分析的是官方提供的框架,Android的SDK只有Java语言编写的SDK,Ios提供的只有objective-c的sdk,鸿蒙则不同,在鸿蒙的开发者网站中,大部分接口不但提供ArkTs接口,同时也提供了C/C++接口,所以可以说鸿蒙是支持ArkTS和C/C++研发也不为过的,如果您精通C/C++就可以在harmonyOS平台上,大有作为的。我想说的重点不在这里,重点是三个研发平台采用的是不同的研发语言,对于一个移动端研发的程序员,如果要精通三个平台研发,确实很难,仅精通一个平台以实属不易了。然面对一个公司,开发和运营一款APP按照传统原生研发,APP的团队至少在3到5人的研发才可以胜任,粗略估算一年的团队费用在100万左右的投入,对于大厂5人以下的研发团队,完全可以接受,但是对于一个创业型的小公司,这个投入势必难以接受,在加上国内的政策性成本,APP研发的门槛已是很高了。使用原生研发,小型创业团队极难在短时间内收回研发的成本。
使用codova混合式研发
具以上原因,为了降低研发成本,如果一次研发能够同时在三个平台使用就好了,所以现在出现了不少框架来解决这个问题,然很多框架仍需要单独学习,且不够高效。我们所需要的是对于公司现有的开发团队,不需要学习新知识的情况下就可以在APP端研发,且研发的APP可以结合操作系统,直接调用原生API;目前能够满足这几个条件的只有cordova了。cordova是使用webview为UI交互,使用WEB技术的JS、CSS就可以完成研发,且可以调用原生API,也可以调用原生page页面,可以说现在所有的程序员都可以掌握这门技术,无需在多学习知识,公司无论大小,现有研发团队就可以胜任,哪怕研发团队只有一人也可以完成。对于公司来说极大的节省了成本,但是对于一个程序员,由于使用JS、CSS,就很不屑于使用这个技术研发APP,不过我可以肯定的说,现在大多APP都使用的混合研发的。所以对于小厂,直接使用后台的Java程序员就可以兼任前端的APP研发,并且支持三个平台。
C/C++研发鸿蒙cordova
Cordova的前世今生不再讲述,然而自harmonyOS问世以来,cordova的美国官方维护者Apache基金会,并没有打算适配harmonyOS系统,靠APP为生的公司,其实大家都知道已经在安卓和苹果应用市场,说竞争的头破血流也不为过的,由于排名竞争激烈,很多公司已无力运营,安卓和苹果应用市场的APP已处于僵死状态,不再更新和维护了,现在又多了一个鸿蒙操作系统,是否在鸿蒙上可以分的一本羹呢?多数人在观望,一部分人已经行动了(2023年到2024年)。
然新的问题来了,基于cordova研发的混合APP,鸿蒙系统并没有官方的cordova,我们公司的APP也是基于cordova研发的。我们从2023年10月开始抽调公司人力研发harmony-cordova。从当前看,Apache基金会的cordova的研发团队在6人左右。我们只配置3人的研发团队,因为我要做的不是创新,我们只是遵守cordova官方的标准研发鸿蒙的即可。
做过鸿蒙研发的都知道,鸿蒙的开发者网站上,提供的接口基本是两套,一套是ArkTs,一套是C/C++,说一句实在话,对于一个经验丰富的程序员,直觉告诉自己,在框架性底层研发只有选择C/C++才能实现一个高效、灵活、扩展性好的底层系统。因为cordova除了自身的SDK外,还有很多插件,另外用户也可以自定义研发插件,如果采用ArkTS研发,必然有部分插件难以高效率的实现功能或者说就实现不了,例如热更新插件使用ArkTs将无法实现功能,就连cordova本身的SDK也难以高效率实现。如果您也正在着手研发公司自己内部使用的cordova,请选择C/C++和ArkTS结合的方式研发,SDK本身采用C/C++研发,牵涉到UI层,使用ArkTS研发,鸿蒙和其他平台相比,强项就是跨语言研发和跨语言调用。
harmony-cordova研发的技术方案简述
harmony-cordova是使用C/C++语言对webview的扩展研发,具体工作流程如下:
APP启动
APP启动后,根据config.xml的插件配置实例化插件对象,并创建线程池和内存池,线程池是负责应用端的https(SSL/TLS)请求的。
跨域访问
harmony-cordova是webview内核的扩展研发,修改了请求方式,因此harmony-cordova不存在跨域访问,应用层可以访问任何域名,因此为了安全您需要使用白名单插件,在config.xml配置白名单域名。
内存池
内存池是用在请求和接收信息时使用的内存,内存池采用分页式内存管理,初始化是1个页面2M内存,根据实际的请求,内存池不断增加页面,内存的内存页都可以复用,也就是用的时候去内存池里面拿内存,用完后再把内存页放进去,避免每次请求在堆上申请内存。
线程池
线程池是负责https请求的,webview后台开启线城池,主要是负责应用层的http(s)协议通讯的。
session复用
https请求实际就是http协议的SSL/TLS加密通讯,如果您了解SSL/TLS通讯,就应该知道,在建立SSL/TLS通讯链路的时候,需要服务端和客户端直接进行捂手,TLS1.3版本的通讯中,也是需要1TTR的交互,harmony-cordova强制使用session复用实现捂手的0TTR,极大提高客户端和服务端的通讯效率。
独立文件缓存
cordova sdk采用自己的独立资源文件缓存,对于网页的图片、视频、语音等harmony-cordova采用独立的文件缓存,每次请求优先从缓存获取资源。
插件研发
harmony-cordova自带部分插件使用C/C++和ArkTs研发,所有插件遵守cordova官方标准,另外也提供了自定义插件研发,所有插件的调用入口是C/C++提供,根据功能在需要调用ArkTS时,C/C++调用ArkTS侧。
使用方法
参考鸿蒙三方库中心
OpenHarmony三方库中心仓https://ohpm.openharmony.cn/#/cn/detail/@magongshou%2Fharmony-cordovademo程序
harmony-cordova: 鸿蒙版cordova的demo示例程序https://gitee.com/magongshou/harmony-cordova
更多推荐
所有评论(0)