Skip to content

uniapp 配置 鸿蒙开发环境

前言

随着 HarmonyOS Next 的发布,国内的大前端中又增加了一名重量级的角色。目前想要开发出一款主流的覆盖所有移动端的产品的公

司,我们来看看它需要做出什么样的产品

image-20241219073016202

从中我们可以看到,想到开发完一套完整的产品,多端发布的压力不容小觑。所以在企业在考虑兼容HarmonyOS Next 的时候需要考虑

资深的开发成本了。根据市场上已有的技术方案结合企业自身的需求,企业可以选择的不多:

  1. 开发单个客户端
  2. 开发多端
  3. 开发全端

开发单个客户端可以考虑使用原生或者是多端框架。

开发多端必须要考虑相关的框架了。如 React Native、Flutter、Uniapp、Taro等

开发全端能考虑的不多,基本就是Uniapp、和Taro。

但是考虑到目前 HarmonyOS Next 比较火热,所以下面的主题都是围绕它进行

多端解决方案

目前市场上对于多端开发的解决方案,我们看看都有哪一些:

  1. React Native 推出的 ohos_react_native
  2. flutter 推出的 flutter_flutter
  3. uniapp
  4. taro

React Native

image-20241219075439289

从上图可以看出,RN架构中在React CommonOS 之间加入了 OpenHarmony 适配层

  • React Common:所有平台通用的 CPP 代码,用于对 RN 侧传过来的数据进行预处理。
  • OS 代码:对接系统底层功能,根据适配层代码传过来的数据进行渲染,或完成对应的功能。

RN在进行鸿蒙化时,主要是使用了两个方案

  1. Fabric 负责渲染
  2. TurboModule 负责通信

Fabric 是 React Native 的组件渲染系统。接收 React Native 传过来的组件信息,处理后发送给原生 OS,由 OS 完成页面的渲染。

此方案中,rn不能根据已有的代码编程成ArkUI对应的组件,而是利用了OpenHarmony 提供的ContentSlot接口,调用C-APi创建的组件。

image-20241219075800757

TurboModule是 React Native 中用于 JavaScript 和原生代码进行交互的模块。

根据是否依赖 OpenHarmony 系统相关的能力,可以分为两类: ArkTSTurboModulecxxTurboModule

  1. ArkTSTurboModule
    • ArkTSTurboModule 为 React Native 提供了调用 ArkTS 原生 API 的方法。可以分为同步与异步两种。
    • ArkTSTurboModule 依赖 NAPI 进行原生代码与 CPP 侧的通信。包括 JS 与 C 之间的类型转换,同步和异步调用的实现等。
  2. cxxTurboModule
    • cxxTurboModule 主要提供的是不需要系统参与的能力,例如NativeAnimatedTurboModule 主要提供了数据计算的相关能力。
    • cxxTurboModule 不依赖于系统的原生 API,为了提高相互通信的效率,一般是在 cpp 侧实现,这样可以减少 native 与 cpp 之间的通信次数,提高性能。

TurboModule

flutter

flutter_flutter

目前是华为团队在维护fluttersdk,基于Flutter SDK对于OpenHarmony平台的兼容拓展,可支持IDE或者终端使用Flutter Tools指令编译

和构建OpenHarmony应用程序。

Uniapp

聊回到国内的uniapp,对于uniapp,一直是国内大前端的技术选型的领先者。

uniapp 也推出了针对鸿蒙的适配。

Taro

Released under the MIT License.