uniapp 配置 鸿蒙开发环境
前言
随着 HarmonyOS Next 的发布,国内的大前端中又增加了一名重量级的角色。目前想要开发出一款主流的覆盖所有移动端的产品的公
司,我们来看看它需要做出什么样的产品
从中我们可以看到,想到开发完一套完整的产品,多端发布的压力不容小觑。所以在企业在考虑兼容HarmonyOS Next 的时候需要考虑
资深的开发成本了。根据市场上已有的技术方案结合企业自身的需求,企业可以选择的不多:
- 开发单个客户端
- 开发多端
- 开发全端
开发单个客户端可以考虑使用原生或者是多端框架。
开发多端必须要考虑相关的框架了。如 React Native、Flutter、Uniapp、Taro等
开发全端能考虑的不多,基本就是Uniapp、和Taro。
但是考虑到目前 HarmonyOS Next 比较火热,所以下面的主题都是围绕它进行
多端解决方案
目前市场上对于多端开发的解决方案,我们看看都有哪一些:
React Native
从上图可以看出,RN架构中在React Common 和 OS 之间加入了 OpenHarmony 适配层
- React Common:所有平台通用的 CPP 代码,用于对 RN 侧传过来的数据进行预处理。
- OS 代码:对接系统底层功能,根据适配层代码传过来的数据进行渲染,或完成对应的功能。
RN在进行鸿蒙化时,主要是使用了两个方案
- Fabric 负责渲染
- TurboModule 负责通信
Fabric 是 React Native 的组件渲染系统。接收 React Native 传过来的组件信息,处理后发送给原生 OS,由 OS 完成页面的渲染。
此方案中,rn不能根据已有的代码编程成ArkUI对应的组件,而是利用了OpenHarmony 提供的ContentSlot接口,调用C-APi创建的组件。
TurboModule是 React Native 中用于 JavaScript 和原生代码进行交互的模块。
根据是否依赖 OpenHarmony 系统相关的能力,可以分为两类: ArkTSTurboModule和cxxTurboModule 。
- ArkTSTurboModule:
- ArkTSTurboModule 为 React Native 提供了调用 ArkTS 原生 API 的方法。可以分为同步与异步两种。
- ArkTSTurboModule 依赖 NAPI 进行原生代码与 CPP 侧的通信。包括 JS 与 C 之间的类型转换,同步和异步调用的实现等。
- cxxTurboModule:
- cxxTurboModule 主要提供的是不需要系统参与的能力,例如
NativeAnimatedTurboModule
主要提供了数据计算的相关能力。 - cxxTurboModule 不依赖于系统的原生 API,为了提高相互通信的效率,一般是在 cpp 侧实现,这样可以减少 native 与 cpp 之间的通信次数,提高性能。
- cxxTurboModule 主要提供的是不需要系统参与的能力,例如
flutter
目前是华为团队在维护fluttersdk,基于Flutter SDK对于OpenHarmony平台的兼容拓展,可支持IDE或者终端使用Flutter Tools指令编译
和构建OpenHarmony应用程序。
Uniapp
聊回到国内的uniapp,对于uniapp,一直是国内大前端的技术选型的领先者。
uniapp 也推出了针对鸿蒙的适配。