背景
跨平台主要是为了节省开发成本,在复杂度并不高,并没有那么追求极致性能(Maybe)的情况下是一个不错的选择。
目前业界的跨平台技术也发展多年,H5页面,RN,Flutter,Weex,甚至是小程序,uniapp,都算是解决方案的一种。
华为在今年的线下开发者学习交流会上提到了他们基于鸿蒙OS的跨平台方案–ArkUi-X,给了广大客户端开发者一个新的思路(ps:用不用无所谓,看一看不吃亏不上当)。
>
举个栗子:
公司A研发的APP原本提供Android和iOS平台,且都是原生开发,现在想要支持鸿蒙,那就重新从0到1做个鸿蒙版APP,然后需要重新分配人力,客户端两端变三端,后续维护与迭代也是各自独立,成本增加50%。
公司B研发的APP也是有Android和iOS版本,但是部分业务使用了跨平台技术,比如Flutter,工程使用混合开发,即a功能都是原生,各自开发,b功能是用Flutter写,写完通过libs或者submodule的方式引用到Android和iOS工程中。
公司C研发的APP一开始就是跨平台方案,比如使用了纯Flutter或者uniapp,那就坐等框架级的解决方案。
以上可以看出,APP增加鸿蒙端不仅仅是在从0到1的研发阶段,在后续迭代上也都有不同程度的成本增加,这一点在会议上也有人问过,答案是肯定的。
思考
华为给了ArkUi-X跨平台方案,很容易提出这么一个疑问:既然鸿蒙化开发是一定的,那么能不能做完鸿蒙版了,让其中绝大部分业务代码具有跨平台能力,后续各端需求迭代都用arkts进行开发?
也就是类似上面公司B,把Flutter变成ArkUi-X
个人感觉比较适合之前大多数或者全部业务都是通过原生开发的APP(H5除外)
好处有几个
:
1.鸿蒙版板上钉钉的情况下,用arkts从0到1开发新的APP在所难免,迁移成跨平台的成本低。
2.如果之前团队内没有其他跨平台技术储备,也无需去入门,适配其他跨平台技术。
3.对现有工程改造度相对较低,且能享受到跨平台的优势,即端越多,节省成本越大。
或者有更多。。
当然也有劣势
:
1.目前整个生态还没有完全建立成型,网上资料少到想哭,建议抱团或者多加几个官方支持,不然遇到问题真的是一抹黑。
2.还没看得太懂国内厂商的战略布局,米OV有没有可能后来居上或者又来个3Q大战。
或者还有更更多。。
官方答复
接下来看看华为给出的一些官方点:
- ArkUI-X负载应用性能数据(仿微信),通过负载应用测试,性能表现持平竞品,部分优于竞品10%。
(给了一个数据对比图,涉及到冷热启动,平均和峰值内存,滑动时帧率等,暂时还不太好公布出来) - Android平台最低支持API26+(8.0及以上),iOS最低版本为iOS10+
- 支持arm64和arm32架构
- 只支持Stage模型
- Next应用中跨平台模块的bundleName必须和Android,iOS包名一致
- 部署跨平台模块时moduleName必须应用内唯一,不允许重名
- ArkUI-X提供的Bridge通信机制,要求拉起跨平台界面时才可以,不支持在原生界面直接和TS侧通信
- ArkUI-X框架支持鸿蒙原生应用hap,hsp类型包结构并遵循鸿蒙应用开发规范,其中hsp不可单独跨平台,必须有hap类型提供UIAbility
>
然后是相关FAQ:
问题1:我的鸿蒙原生应用是否可以整体跨平台?
A:应用由组件、业务逻辑、调用系统API三部分组成,开发方式? 其中95%UI组件已支持跨平台,TS业务代码运行方舟虚拟器支持跨平台,系统API当前已适配高频基础2000+
问题2:ArkUI-X和ArkUI关系?是否存在独立的ArkUI-X
开发方式?
A:ArkUI-X完全复用ArkUI范式,二者开发态完全一致,
仅编译态有区别,不存在独立的ArkUI—X开发方式
问题3:是否可以先开发鸿蒙原生应用,然后再将其改
造成跨平台?
A:可以,将应用或部分模块标记为跨平台,之后针对ArkUI业务逻辑进行少量适配即可。
吐槽和后续挖坑
华为对于鸿蒙的推广力度很大的,单从线下的开发者会议就能看出来多么cai da qi cu,会议时ArkUI-X的架构师说已经有千万级的代码了,不过相比于api11的文档基本上每天都在更新,ArkUI-X的文档基本都在三个月前停止更新,导致在做demo的时候也遇到了不少问题,不得不去找华为的技术来支持。
至于demo,和19年的时候做Flutter类似,无非就是页面,容器,bridge,组件化,依赖,lib化,看看有没有必要来个实现和踩坑笔记,一起学习成长。
参考与扩展
https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/README.md
https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/releasenotes-overview-0000001602419138
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至same4869@126.com