一、跨渠道结构介绍

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

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

跨渠道的优势有以下三个方面:

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

2、添加代码复用,节省开发的本钱;

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

如何用一套代码运行跨多操作系统应用

跨渠道结构

假定需求是要在三个渠道上开发相同功用的运用,假如每个渠道都需求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,依靠系统的特有才能,无法做到跨渠道。

如何用一套代码运行跨多操作系统应用

渠道全局API

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

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

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

如何用一套代码运行跨多操作系统应用

API扩展机制

以下面代码为例,经过规范的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。

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

如何用一套代码运行跨多操作系统应用
命令行东西

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

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

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

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

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

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

三、如何运用ArkUI开发跨渠道运用

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

如何用一套代码运行跨多操作系统应用

健康饮食

1、运用工程创立:

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

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

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

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

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

如何用一套代码运行跨多操作系统应用

跨渠道工程目录结构

2、开发及调试:

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

如何用一套代码运行跨多操作系统应用
“健康饮食”开发

3、构建与发布:

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

如何用一套代码运行跨多操作系统应用
运用Android Studio构建

如何用一套代码运行跨多操作系统应用
运用XCode构建

4、装置与运转:

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

如何用一套代码运行跨多操作系统应用
HarmonyOS端运转作用

如何用一套代码运行跨多操作系统应用
Android端运转作用

如何用一套代码运行跨多操作系统应用
iOS端运转作用

四、总结与展望

上面说到的这些ArkUI跨渠道才能,将在近期进行开源,感兴趣的开发者能够继续重视。接下来ArkUI会环绕各渠道的才能进行构建,进一步丰厚跨渠道的组件,并继续对功用、内存、包巨细等方向进行优化,不断完善@ohos的API插件包,进一步提高开发者对跨渠道的诉求和体验。

如何用一套代码运行跨多操作系统应用