鸿蒙harmony-cordova研发方案详解

打印 上一主题 下一主题

主题 934|帖子 934|积分 2804

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表