一、前言

说到跨渠道,要先了解什么是“渠道”,这里的渠道,便是指运用程序的运转环境,例如操作系统,或许是Web浏览器,详细的像HarmonyOS、Android、iOS、或许浏览器,都能够叫做渠道。

跨渠道结构,便是一个运用的开发结构,开发者依据这个结构开发的运用,能够别离在不同的渠道上运转,业界比较知名的比如:React Native、Flutter或许各种小程序结构,都能够称之为跨渠道结构。

跨渠道结构介绍:

  • 1、能够削减开发者的学习成本;

  • 2、增加代码复用,节省开发的成本;

  • 3、削减对各个渠道差异的适配。

鸿蒙ArkUI如何开发跨平台应用?

假设需求是要在三个渠道上开发同样功用的运用,假如每个渠道都需要10个单位的工作量,那么总共将花费30个单位的工作量。假如运用了跨渠道结构,经过代码复用,那么或许只需要一半的工作量,甚至更少,这也是为什么开发者都在探索不同的跨渠道方案。

二、ArkUI跨渠道才能介绍

为满足HarmonyOS运用生态建设关于跨渠道开发的需求,咱们正在和相关的合作伙伴定向开源构建ArkUI的跨渠道才能,目标先支撑HarmonyOS、OpenHarmony、Android、iOS渠道,后续还将逐渐增加对更多渠道的支撑。这样,开发者依据一套主代码,就能够构建可支撑多渠道的精巧的高功用运用。

ArkUI的定位包括以下几个方面:

  • 1、ArkUI作为HarmonyOS原生的运用结构,才能将预置在HarmonyOS中;

  • 2、ArkUI作为所有原子化服务的根底运转环境,如各类服务及万能卡片;

  • 3、ArkUI也将作为一个通用的跨渠道结构来开发多渠道的运用。

鸿蒙ArkUI如何开发跨平台应用?

在ArkUI的架构规划之初就把跨渠道作为一个重要的规划原则,从代码的架构上就对各个渠道的调用做了解耦,能够便利的移植到不同的渠道,一起运用的图形引擎也是能够跨渠道的,所有依据它的组件都是自渲染的,所以有较好的功用和渲染一致性。一起运用了NAPI作为JS API的扩展机制,能够将相同界说的API扩展到不同渠道进行完成。

接下来将从组件支撑度、运用工程跨渠道、API才能鸿沟等6个纬度详细介绍ArkUI具备的跨渠道才能。

1、跨渠道才能——组件支撑度:

ArkUI跨渠道目前具备的一些组件才能,主要为以下两方面:

1)OpenHarmony支撑的根底组件,都会进行支撑。

2)供给一些高级组件才能,比如XComponent和它的相关机制。

2、跨渠道才能——运用工程跨渠道:

关于一个完好的HarmonyOS运用,要做到跨渠道运转,还需要事务逻辑和它运用的API、资源都能跨渠道。

鸿蒙ArkUI如何开发跨平台应用?

关于事务逻辑,运用@ohos的规范API,跨渠道的目标是:运用这些API开发的逻辑尽或许的直接在不同渠道运用。

3、跨渠道才能——API才能鸿沟:

API大致分为以下几类,支撑策略也略有不同:

1)渠道无关的API,这部分是能够直接移植到不同渠道;

2)依靠渠道桥接的API,需要运用API扩展机制在不同渠道别离桥接;

3)不同渠道或许不是一一对应的API,通用的根本才能部分能够在不同渠道别离桥接;

4)渠道专有的API,依靠系统的特有才能,无法做到跨渠道。

鸿蒙ArkUI如何开发跨平台应用?

4、跨渠道才能——API扩展机制:

ArkUI供给了一套API的扩展机制,能够便利的去完成相同界说的API在不同渠道上运用。

扩展机制整体是复用NAPI机制,也是HarmonyOS上默许扩展API的机制,一起供给了JS->C++->Java/ObjectC的代码互调的机制。这套机制也同样适用于三方插件扩展或许开发者自己事务的扩展。

鸿蒙ArkUI如何开发跨平台应用?

以下面代码为例,经过规范的NAPI进行接口的扩展,一起也支撑注册一个Java的类,在接口调用时会动态加载这个类,最终调用到Java的完成中。

// 注册插件,导出JS方法
static napi_value TestPluginExport(napi_env env, napi_value exports)
{
     static napi_property_descriptor desc[] =  { DECLARE_NAPI_FUNCTION("hello", JSTestPluginHello), };
     NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
     return exports;
 }
static napi_value JSTestPluginHello(napi_env env, napi_callback_info info)
{
      auto plugin = TestPlugin::Create();
      plugin->Hello();
      … 
 }
static void TestPluginJniRegister()
{
     const char className[] = "ohos.ace.plugin.testplugin.TestPlugin";
     OH_Plugin_RegisterPlugin(&TestPluginJni::Register, className);
}
extern "C" __attribute__((constructor)) void TestPluginRegister()
{
   napi_module_register(&testPluginModule);
   OH_Plugin_RunTaskOnPlatform(&TestPluginJniRegister);
}
// Java 事务逻辑
package ohos.ace.plugin.testplugin;
public class TestPlugin {
     public TestPlugin(Context context) {
          ...
     }
     public void hello() {
          Log.i(LOG_TAG, "hello from java");
      }
  }

5、跨渠道才能——命令行东西

ArkUI还将供给一个命令行东西,能够支撑Windows、Mac、Linux的开发环境,支撑创立跨渠道工程,能够构建出HarmonyOS、Android以及iOS的运用程序,并能够生成目标渠道的开发工程,如Android Studio/XCode。

一些常用的命令如下,涵盖了从创立工程到运转打包的常用功用:

鸿蒙ArkUI如何开发跨平台应用?

打包常用功用

6、跨渠道才能——DevEco Studio跨渠道支撑:

后续还将在DevEco Studio上参加对跨渠道的支撑,增加才能如下:

1)创立工程时能够经过跨渠道模板创立一个支撑跨渠道的工程;

2)能够支撑编译出Android/ iOS上的装置调试包;

3)支撑发现和衔接不同设备真机和模拟器;

4)支撑运用工程导出为Android运用工程和iOS运用工程,便利原生才能扩充或混合开发。

三、怎么运用ArkUI开发跨渠道运用

了解了ArkUI的跨渠道才能之后,下面咱们用“健康饮食”运用开发详细事例介绍运用ArkUI开发跨HarmonyOS、Android及iOS三大渠道的完好流程。

鸿蒙ArkUI如何开发跨平台应用?

1、运用工程创立:

首要创立一个跨渠道工程,咱们以运用命令行东西为例。

1)先运用npm install装置相关的依靠包;

2)经过ace check查看运转环境,能够依据提示装置相关依靠的软件;

3)经过ace create创立跨渠道运用的工程,能够支撑类Web范式或声明式范式。

创立好的工程的目录结构如下图所示,能够看到不同渠道的工程文件,一起这里的source目录下,寄存的便是跨渠道通用的代码结构。

鸿蒙ArkUI如何开发跨平台应用?

代码结构

2、开发及调试:

开发运用的进程就和开发一个普通的HarmonyOS运用相同,进行UI界面与逻辑的规划,运用DevEco Studio进行开发,然后实机运转及调试。

开发及调试

3、构建与发布:

有两种方式进行构建,一是经过命令行“ace build”能够直接进行构建;二是经过目标渠道的工程进行构建,如下图所示,能够直接经过Android Studio或XCode构建出对应渠道的装置包。

鸿蒙ArkUI如何开发跨平台应用?

运用Android Studio构建

鸿蒙ArkUI如何开发跨平台应用?

运用 XCode 构建

4、装置与运转:

构建完成后,能够经过“ace install”命令进行装置运转,下面便是“健康饮食”同一个运用在HarmonyOS端、Android端和iOS端上的运转作用。

鸿蒙ArkUI如何开发跨平台应用?

HarmonyOS 端运转作用

鸿蒙ArkUI如何开发跨平台应用?

Android端运转作用

鸿蒙ArkUI如何开发跨平台应用?

IOS 端运转作用

上面说到的这些ArkUI跨渠道才能,将在近期进行开源,感兴趣的开发者能够持续关注。

参考摘自: HarmonyOS开发者-怎么用一套代码运转跨多操作系统运用