侵权投诉

在HarmonyOS版本下如何基于JS UI框架来开发?

2021-07-13 09:24 次阅读

作者:zhenyu ,华为软件开发工程师

在当前HarmonyOS版本下,如何基于JS UI框架来开发呢?

1JS UI框架下FA与PA交互的使用场景通常一个典型使用JS UI框架的HarmonyOS应用开发模型

HarmonyOS的用户应用程序包APP由一个或多个Hap包组成。每个Hap可以包含一个或多个Ability。Ability分为两种类型:Feature Ability(简称FA)和Particle Ability(简称PA),FA和PA是HarmonyOS应用的基本组成单元,能够实现特定的业务功能。

FA有UI界面,而PA无UI界面。FA有多种展现形式,如普通界面形式Page Ability,服务卡片形式Form等,一般使用JS 语言实现前台界面。PA支持ServiceAbility和Data Ability。ServiceAbility提供后台运行任务的能力,如处理复杂后台任务等。Data Ability用于对外部提供统一的数据访问抽象。这两个Ability一般使用Java 语言实现。

JS UI框架提供的声明式编程,使应用开发更加简单,但当前HarmonyOS JS API还不够丰富,无法处理数据等更复杂的业务。为了达到处理复杂业务,同时保证业务数据和UI的解耦,一般会将复杂逻辑放到PA中即JAVA端实现,而界面交互则放到FA中的UI部分即JS端实现,如图1所示。

这就涉及到FA(JS端)与PA(JAVA端)的交互,为此,Harmony OS JS UI框架提供了JS FA(Feature Ability)调用JAVA PA(Particle Ability)的机制,该机制提供了一种通道来传递方法调用、处理数据返回以及订阅事件上报。

下面我们通过一两个例子来解释该方法涉及的技术原理。

2HarmonyOS下FA调用PA机制1接口拓展机制为支持ACE开发框架一次开发,跨平台运行的目标,采用了接口拓展机制打通前端应用层和后端平台层。JS UI框架提供了一种自动封装平台能力扩展API的机制,让应用开发者轻松调用API即能完成JS端到JAVA端的传递方法调用、处理数据返回以及订阅事件上报。

如图2所示,当前HarmonyOS支持JS作为前端应用开发语言,提供API接口,供开发者实现业务逻辑,通过类似接口拓展机制将JS层的参数传递到平台层(Native),同时在平台层提供插件代码(Plugin Native code)供三方平台实现业务逻辑。

◆ JS FrameWork

提供API用于传递方法调用,数据流通信,以及订阅事件回调。并通过JsBridge桥接起C++++与JS,JsBridge主要负责加载JS代码,运行在QJS Engine上,将JS代码通过全局函数桥接到C++上,并将C++的结果返回给JS层。

◆ QJS Engine

QuickJS 是一个轻量且可嵌入的 JavaScript 引擎,包括模块、异步生成器和代理。

◆ ACE Framework

将JS的消息往平台层透传,将JS数据转换成C++类型的数据,再通过C++与JAVA的JNI接口类,将C++的数据传递到JAVA侧,并接收JAVA侧返回的数据。

◆ Native

负责平台层数据编解码,并根据解码后得到的FunctionName调用第三方开发者的插件代码逻辑。◆ HarmonyOS API平台层提供JAVA端API接口。开发者实现JAVA端对应接口的业务逻辑。2HarmonyOS下FA调用PA机制JS UI框架当前提供了Ability和Internal Ability两种FA调用PA的方式:

● Ability调用方式:拥有独立的Ability生命周期,FA使用远端进程通信拉起并请求PA服务,适用于基本服务PA有多个FA调用或者PA在后台独立运行的场景。

● Internal Ability调用方式:PA与FA共进程,PA和FA采用内部函数调用的方式进行通信,适用于对服务响应时延要求较高的场景。该方式下PA不支持其他FA访问调用。

这两种调用方式在代码中可通过abilityType来标识FA调用PA注意事项:

● JS和JAVA侧定义好的“方法调用”在对外开放后,需要保证前向兼容性。

● 序列化数据默认最大支持200KB数据量,若需要传输大数据,可以使用对应接口ohos.utils.Parcel.setCapacity()调整buffer容量大小。

3FA调用PA开发方法下面来给大家详细介绍JS FA调用JAVA PA的开发方法。

当FeatureAbility Plugin收到JS调用请求后,系统根据开发者在JS接口中设置的参数如指定的abilityType(Ability或Internal Ability),来选择对应的方式进行处理。开发者在onRemoteRequest()中实现PA提供的业务逻辑,不同的业务通过业务码来区分。

◆ FA端

1.Channel JS API提供以下模块能力:

● ModuleGroup

用于传递方法调用的类,通常用于上层应用者调用native中的某个方法而定义使用。调用callNative()方法即可将function以及对应的参数传递到平台层,需要在Native层也适配相应的逻辑代码。

简言之,即ModuleGroup实现JS调用JAVA方法,提供的JS API如下:

√ 调用PA能力,FeatureAbility.callAbility(OBJECT)

● EventGroup

用于数据流通信,通常用于平台层触发的Native事件通知应用层。在应用层调用subscribe()方法注册回调事件启动监听平台,调用unSubscribe()取消平台监听。第三方开发者在平台层需要适配相应的逻辑代码。

简言之,即EventGroup实现JAVA回调JS,提供的JS API如下:

√ 订阅PA能力,FeatureAbility.subscribeAbilityEvent(OBJECT, Function)

√ 取消订阅PA能力,FeatureAbility.unsubscribeAbilityEvent(OBJECT)

2.FeatureAbility Plugin主要完成方法调用、数据流的参数传递(编解码)、线程切换、JNI转换等处理。其主要提供以下2个重点模块:

● Internal Ability Manager

用于Internal Ability的管理,包括注册管理等,注册后的Internal Ability与FA共生命周期。

● Connection Manager

JS端与JAVA端通过接口扩展机制进行通信,通过bundleName和abilityName来进行关联。

◆ PA端

PA端提供以下两类接口:

● IRemoteObject.onRemoteRequest(int, MessageParcel, MessageParcel, MessageOption)

Ability调用方式,FA使用远端进程通信拉起并请求PA服务。

● AceInternalAbility.AceInternalAbilityHandler.onRemoteRequest(int, MessageParcel, MessageParcel, MessageOption)

Internal Ability调用方式,采用内部函数调用的方式和FA进行通信。

4Ability调用方式流程

1.FA JS端指定PA的调用方式及相关消息码和内容,调用PA(订阅PA类似)。设置bundleName,abilityName,abilityType等。2.PA JAVA端响应:通过Ability方式拉起的PA继承自Ability,FA在请求PA服务时会连接到PA,连接成功后,PA在onConnect返回一个remote对象(RemoteObject),用于FA向PA发送消息。remote对象实现onRemoteRequest方法,用于响应FA端的请求。示例代码如下:e.g.两数求和

◆ FA端 (Ability方式)

// abilityType: 0-Ability; 1-Internal Abilityconst ABILITY_TYPE_EXTERNAL = 0;const ABILITY_TYPE_INTERNAL = 1;// syncOption(Optional, default sync): 0-Sync; 1-Asyncconst ACTION_SYNC = 0;const ACTION_ASYNC = 1;const ACTION_MESSAGE_CODE_PLUS = 1001;export default { plus: async function() { var actionData = {}; actionData.firstNum = 1024; actionData.secondNum = 2048; // 请求参数,abilityName、bundleName、messageCode、abilityType、actionData需要求和的2个入参 var action = {}; action.bundleName = ‘com.example.hiaceservice’; action.abilityName = ‘com.example.hiaceservice.ComputeServiceAbility’; action.messageCode = ACTION_MESSAGE_CODE_PLUS; action.data = actionData; // 使用ability方式 action.abilityType = ABILITY_TYPE_EXTERNAL; action.syncOption = ACTION_SYNC; // FA调用PA var result = await FeatureAbility.callAbility(action); var ret = JSON.parse(result); if (ret.code == 0) { console.info(‘plus result is:’ + JSON.stringify(ret.abilityResult)); } else { console.error(‘plus error code:’ + JSON.stringify(ret.code)); } }}

◆ PA端(Ability方式)

public class ComputeServiceAbility extends Ability { private MyRemote remote = new MyRemote(); // FA在请求PA服务时会连接PA,连接成功后,需要在onConnect返回一个remote对象,供FA向PA发送消息 @Override protected IRemoteObject onConnect(Intent intent) { super.onConnect(intent); return remote.asObject(); } // remote对象的实现,完成消息请求处理,回传 class MyRemote extends RemoteObject implements IRemoteBroker { private static final int SUCCESS = 0; private static final int ERROR = 1; private static final int PLUS = 1001; MyRemote() { super(“MyService_MyRemote”); } @Override public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) { switch (code) { // 消息码PLUS case PLUS: { // 消息参数解析 String dataStr = data.readString(); RequestParam param = new RequestParam(); try { param = ZSONObject.stringToClass(dataStr, RequestParam.class); } catch (RuntimeException e) { HiLog.error(LABEL, “convert failed.”); } // 返回结果设置 Map《String, Object》 result = new HashMap《String, Object》(); result.put(“code”, SUCCESS); result.put(“abilityResult”, param.getFirstNum() + param.getSecondNum()); // 返回结果回传 reply.writeString(ZSONObject.toZSONString(result)); break; } default: { Map《String, Object》 result = new HashMap《String, Object》(); result.put(“abilityError”, ERROR); reply.writeString(ZSONObject.toZSONString(result)); return false; } } return true; } @Override public IRemoteObject asObject() { return this; } }}

5Internal Ability调用方式流程

1.FA JS端指定PA的调用方式及相关消息码和内容,调用PA(订阅PA类似)。设置bundleName,abilityName,abilityType等。2.PA JAVA端响应:通过Internal Ability方式拉起的PA需要继承自AceInternalAbility,且需要在AceAbility中注册该Internal Ability(AceAbility中执行register方法)。PA中通过setInternalAbilityHandler方法注册onRemoteRequest方法,用于响应FA端的请求。示例代码如下:e.g.两数求和

◆ FA端(Internal Ability方式)

和使用ability方式代码类似,区别是需要改变方式类型为Internal Ability:

action.abilityType = ABILITY_TYPE_INTERNAL;

◆ PA端(Internal Ability方式):

//Internal Ability注册:在MainAbility注册public class MainAbility extends AceAbility { @Override public void onStart(Intent intent) { // 注册, 如果需要在Page初始化(onInit或之前)时调用AceInternalAbility的能力,注册操作需要在super.onStart之前进行 ComputeInternalAbility.register(this); 。。。 super.onStart(intent); } @Override public void onStop() { // 注销 ComputeInternalAbility.unregister(); super.onStop(); }}

在JAVA目录下实现InternalAbility(此处为ComputeInternalAbility)

public class ComputeInternalAbility extends AceInternalAbility { private static final String BUNDLE_NAME = “com.example.hiaceservice”; private static final String ABILITY_NAME = “com.example.hiaceservice.ComputeInternalAbility”; private static final int SUCCESS = 0; private static final int ERROR = 1; private static final int PLUS = 1001; private static ComputeInternalAbility instance; private AbilityContext abilityContext; // 如果多个Ability实例都需要注册当前InternalAbility实例,需要更改构造函数,设定自己的bundleName和abilityName public ComputeInternalAbility() { super(BUNDLE_NAME, ABILITY_NAME); } public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) { switch (code) { case PLUS: { String dataStr = data.readString(); RequestParam param = new RequestParam(); try { param = ZSONObject.stringToClass(dataStr, RequestParam.class); } catch (RuntimeException e) { HiLog.error(LABEL, “convert failed.”); } // 返回结果当前仅支持String,对于复杂结构可以序列化为ZSON字符串上报 Map《String, Object》 result = new HashMap《String, Object》(); result.put(“code”, SUCCESS); result.put(“abilityResult”, param.getFirstNum() + param.getSecondNum()); // SYNC if (option.getFlags() == MessageOption.TF_SYNC) { reply.writeString(ZSONObject.toZSONString(result)); } else { // ASYNC MessageParcel responseData = MessageParcel.obtain(); responseData.writeString(ZSONObject.toZSONString(result)); IRemoteObject remoteReply = reply.readRemoteObject(); try { remoteReply.sendRequest(0, responseData, MessageParcel.obtain(), new MessageOption()); } catch (RemoteException exception) { return false; } finally { responseData.reclaim(); } } break; } default: { Map《String, Object》 result = new HashMap《String, Object》(); result.put(“abilityError”, ERROR); reply.writeString(ZSONObject.toZSONString(result)); return false; } } return true; }

/** * Internal ability 注册接口。 */ public static void register(AbilityContext abilityContext) { instance = new ComputeInternalAbility(); instance.onRegister(abilityContext); } private void onRegister(AbilityContext abilityContext) { this.abilityContext = abilityContext; this.setInternalAbilityHandler((code, data, reply, option) -》 { return this.onRemoteRequest(code, data, reply, option); }); } /** * Internal ability 注销接口。 */ public static void unregister() { instance.onUnregister(); } private void onUnregister() { abilityContext = null; this.setInternalAbilityHandler(null); }}

以上代码样例只是关键部分,完整代码样例可参考官网资料【JS FA如何调用PA】:● JS FA如何调用PAhttps://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-js-fa-call-pa-0000001050435961

本文介绍了JS FA(Feature Ability)调用JAVA PA(Particle Ability)的机制和使用场景,基于JS UI框架开发的应用可以使用该机制完成更丰富的功能。未来HarmonyOS会持续丰富完善JS API,为开发者提供更便捷的API能力。

编辑:jq

原文标题:JS UI框架下FA与PA是如何交互的

文章出处:【微信号:gh_019562b5fb4b,微信公众号:】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

HarmonyOS 荣获两项红点设计大奖

在近日揭晓的2021红点设计大奖(RedDot Award)中,HarmonyOS 设计系统,以及H....
的头像 HarmonyOS 发表于 09-23 09:44 50次 阅读

HarmonyOS实战——ProgressBar进度条组件基本使用

【鸿蒙专栏,从入门到实战系列】: 1. ProgressBar进度条组件组件说明:常见app中,下载进度条,完成任务的进度条等都会用到常...
发表于 09-22 23:31 0次 阅读

通过一个圆形抽奖转盘演示HarmonyOS自定义组件的实现

1. 介绍      当系统提供的组件无法满足设计需求时,您可以创建自定义组件,根据设计需求自定义组件的属性及...
发表于 09-22 14:41 101次 阅读

HarmonyOS卡片开发-卡片可选功能开发学习

1.卡片编辑功能卡片提供方提供一个卡片的编辑页面,允许从卡片跳转至编辑页面。 卡片提供方在配置文件config.json中添加参数“f...
发表于 09-22 14:33 101次 阅读

HarmonyOS卡片开发--服务卡片概述

服务卡片(以下简称“卡片”)是FA的一种界面展示形式,将FA的重要信息或操作前置到卡片,以达到服务直达,减少体验层级的目...
发表于 09-22 14:10 101次 阅读
HarmonyOS卡片开发--服务卡片概述

【木棉花】:手表游戏——黑白翻棋 之 小改进(后续)

前言这篇文章的讲述是在上一篇文章(前篇)的基础上进行部分修改,如“上集预告”,本文会对黑白翻棋一些功能的实现采用另一种...
发表于 09-18 20:31 606次 阅读
【木棉花】:手表游戏——黑白翻棋 之 小改进(后续)

基于HarmonyOS Player,实现视频文件的播放

1. 介绍      播放视频的多媒体应用程序通常包含两个部分:给定媒体源的播放器加载媒体资源,并通过Surfac...
发表于 09-18 13:51 505次 阅读

HarmonyOS原子服务开发-对于多功能码的使用规则

一、描述1. 首先对于三方log描述,在使用多功能码是,整体结构呈圆形条码状态,最内部的圆为三方log。[table] [tr][td=568] [/t...
发表于 09-17 20:35 82次 阅读
HarmonyOS原子服务开发-对于多功能码的使用规则

HarmonyOS原子服务开发-对于NFC标签的规范

一、该标签可打印用于北向服务场景。比如:线下点单、商户海报、地铁广告等。 二、使用原则标签需贴在不小于标签尺寸规范规定空间...
发表于 09-17 20:26 101次 阅读
HarmonyOS原子服务开发-对于NFC标签的规范

基于HarmonyOS图像编解码,实现图片的旋转、剪裁、缩放、镜像

1. 介绍      HarmonyOS图像模块支持图像业务的开发,常见功能如图像解码、图像编码、基本的位图操作、图...
发表于 09-17 17:19 361次 阅读

基于HarmonyOS编解码能力,实现Camera实时预览流的播放

1. 介绍      视频编解码的主要工作: 编码,即将原始的视频信息压缩为既定格式的数据。解码,即将已知格式...
发表于 09-17 10:56 101次 阅读

鸿蒙生态迎来新机遇,华为开发者大会带来新特性

9月13日,HarmonyOS 2升级用户数正式破亿,极速增长的用户群体给硬件合作伙伴、应用和服务合....
的头像 物联网星球 发表于 09-16 10:55 431次 阅读
鸿蒙生态迎来新机遇,华为开发者大会带来新特性

HarmonyOS系统中基础UI组件

一、UI组件概述 UI组件(以下简称“组件”),是构建界面的核心。 应用中所有的界面元素都是由组件(....
的头像 HarmonyOS开发者 发表于 09-16 09:39 128次 阅读
HarmonyOS系统中基础UI组件

开放原子教育OpenHarmony高校师资培训成功举办

​开源项目 OpenHarmony是每个人的 OpenHarmony   2021 年 8 月 26....
的头像 开放原子教育 发表于 09-15 11:27 962次 阅读
开放原子教育OpenHarmony高校师资培训成功举办

HarmonyOS赋能 华为PixLab X1打印机发布

2021年9月13日,华为智慧办公新品发布会如期召开,发布会上,全球首款搭载HarmonyOS 的激....
的头像 话说科技 发表于 09-15 09:28 350次 阅读

鸿蒙系统如何设置自定义下拉刷新控件

Ohos-MaterialRefreshLayout 是一个自定义 Material 风格下拉刷新控....
的头像 HarmonyOS技术社区 发表于 09-13 09:24 211次 阅读

剖析JS语言在HarmonyOS应用开发框架中的作用

在万物互联(Internet of Things,简称IoT)时代,JS(JavaScript)语言....
的头像 HarmonyOS开发者 发表于 09-10 09:13 252次 阅读
剖析JS语言在HarmonyOS应用开发框架中的作用

HDI接口中如何实现驱动入口

HDI接口概述 HDF 驱动框架的一个重要功能是为系统提供稳定的统一的硬件接口,这样才能保证系统服务....
的头像 HarmonyOS开发者 发表于 09-08 11:23 210次 阅读

HarmonyOS JS应用开发需要关注哪些线程?官方解析来啦~

作者:wuyawei,华为软件开发工程师 HarmonyOS 2提供了对两种开发语言的支持:Java....
的头像 话说科技 发表于 09-06 15:25 203次 阅读
HarmonyOS JS应用开发需要关注哪些线程?官方解析来啦~

支付宝支持HarmonyOS版本的SDK

随着 HarmonyOS 的快速发展,支付宝也推出了支持 HarmonyOS 版本的 SDK。 具体....
的头像 HarmonyOS技术社区 发表于 09-06 09:46 1025次 阅读

鸿蒙系统中如何实现通知功能

HarmonyOS 通过 ANS(Advanced Notification Service,即通知....
的头像 HarmonyOS技术社区 发表于 09-06 09:42 454次 阅读

鸿蒙的数据库知识点学习

移动端开发,数据存储是非常重要的,鸿蒙也不例外,说到数据存储,首要的就是数据库了,数据库的存储机制是....
的头像 HarmonyOS技术社区 发表于 09-06 09:34 187次 阅读

在鸿蒙系统的撸引导页代码的经验

手机 APP 的引导页是一个常见的功能,今天和大家一起分享在鸿蒙系统的撸引导页代码的经验。 应用引导....
的头像 HarmonyOS技术社区 发表于 09-06 09:25 164次 阅读

如何在鸿蒙系统弄一个彩票查询卡片

接触鸿蒙开发已经有 3 个来月了,最近开始在看鸿蒙卡片开发。因为之前的开发大都是基于 Java UI....
的头像 HarmonyOS技术社区 发表于 09-06 09:17 205次 阅读

鸿蒙注册登录页面的实现步骤

注册登录页面 设置的要求如下: 新建项目:TextApplication 上面的数值单位都是 px ....
的头像 HarmonyOS技术社区 发表于 09-06 09:12 368次 阅读

HDF Display驱动模型的整体架构加载及运行流程

Display 驱动概述 随着电子产业迅速发展,带屏类的设备种类日益增多,各种各样的显示屏也随之出现....
的头像 电子发烧友网工程师 发表于 09-05 10:51 371次 阅读
HDF Display驱动模型的整体架构加载及运行流程

WLAN驱动架构的组成和各部件的功能

作者:徐赛 WLAN驱动概述 WLAN 是基于 HDF(Hardware Driver Founda....
的头像 电子发烧友网工程师 发表于 09-05 10:46 354次 阅读
WLAN驱动架构的组成和各部件的功能

OpenHarmony系统HDF驱动框架概述

OpenHarmony系统HDF驱动框架概述 OpenAtom OpenHarmony(以下简称“O....
的头像 HarmonyOS开发者 发表于 09-03 09:29 271次 阅读

OpenHarmony HDF Input驱动模型分析与使用

概述 输入设备是用户与计算机系统进行人机交互的主要装置之一,是用户与计算机或者其他设备通信的桥梁。常....
的头像 电子发烧友网工程师 发表于 09-02 11:28 298次 阅读

原子化服务的官方解析来啦~

一直关注我们的小伙伴们肯定听说过“原子化服务”了,可能有些小伙伴还听说过“元服务”。元服务,其实就是....
的头像 话说科技 发表于 08-30 14:26 362次 阅读
原子化服务的官方解析来啦~

基于HarmonyOS的分镜头App开发技术详解

《分镜头App》的创作灵感来源于殷冬的日常观察,他发现平常人们在自拍时,往往会用前置摄像头,由于像素....
的头像 HarmonyOS开发者 发表于 08-26 17:59 553次 阅读
基于HarmonyOS的分镜头App开发技术详解

鸿蒙系统访问系统相册方法

前几天有朋友问我如何通过 AVStorage 来获取鸿蒙系统相册的图片,这个操作在我们平时开发时也经....
的头像 HarmonyOS技术社区 发表于 08-26 17:49 1204次 阅读

华为P50 Pro怎么样?文化与科技的交织 华为P50 Pro与一曲长城谣

“写你不能成篇,而一提起你便有烈火焚起 火中有你万里的躯体,有你千年的面容 有你的云,你的树,你的风....
的头像 脑极体 发表于 08-20 17:26 1342次 阅读

浅析HarmonyOS基于AI的通用文字识别技术

在资讯大爆炸的时代,我们经常面临文件、图片找不到的情况,HarmonyOS基于AI的通用文字识别技术....
的头像 发表于 08-20 10:42 883次 阅读

如何开发鸿蒙快速学习党史卡片

随着HarmonyOS发布,服务卡片这一功能也走进了人们的视线。它以其直观可视的展现形式,流畅的运行....
的头像 发表于 08-20 10:38 429次 阅读
如何开发鸿蒙快速学习党史卡片

通过Glide组件的GIF能力解读Glide加载资源的过程

HarmonyOS Glide组件是一款非常优秀的图片处理工具,不仅支持多种格式图片的加载,而且采用....
的头像 发表于 08-20 10:17 336次 阅读
通过Glide组件的GIF能力解读Glide加载资源的过程

鸿蒙系统如何创建防疫一码通卡片

创建“一码通”服务卡片工程 ①安装和配置 DevEco Studio 2.1 Release 安装的....
的头像 华为麒麟 发表于 08-20 10:13 796次 阅读
鸿蒙系统如何创建防疫一码通卡片

简述HarmonyOS 应用的目录结构

应用中的几种常见类型的文件 ①Ability Ability 是应用所具备的能力的抽象,一个应用可以....
的头像 华为麒麟 发表于 08-20 10:11 342次 阅读
简述HarmonyOS 应用的目录结构

鸿蒙应用中的几种常见类型的文件

应用中的几种常见类型的文件 ①Ability Ability 是应用所具备的能力的抽象,一个应用可以....
的头像 华为麒麟 发表于 08-20 10:06 397次 阅读
鸿蒙应用中的几种常见类型的文件

鸿蒙分布式任务调度技术教程

本文是对分布式任务调度的一个技术教程,以一个简单的案例来讲解。 正文部分分为两个部分: 第一部分是对....
的头像 华为麒麟 发表于 08-20 10:03 286次 阅读
鸿蒙分布式任务调度技术教程

Pegasus智能家居开发套件_2021

Pegasus智能家居开发套件指南
发表于 08-18 15:39 23次 阅读

Taurus AI Camera开发套件_2021

TaurusAICamera开发套件指南
发表于 08-18 13:32 14次 阅读

Neptune开发套件_2021

Neptune开发套件指南
发表于 08-18 13:32 8次 阅读

带你探究万能卡片的一些用处

刚刚升级HarmonyOS 2的朋友 会注意到桌面不少APP图标下多了小横条比如相机、日历、微博、京....
的头像 华为数据通信 发表于 08-16 09:16 332次 阅读

HarmonyOS应用框架如何解决多设备交互问题?

随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,除了我们每天带在身上的手机、手腕上的智能....
的头像 话说科技 发表于 08-11 11:02 336次 阅读
HarmonyOS应用框架如何解决多设备交互问题?

Cocos Creator v3.2 正式支持 HarmonyOS 多设备协同能力

今年6月2日,HarmonyOS 2宣布正式商用。同月23日,Cocos团队宣布其Cocos Cre....
的头像 话说科技 发表于 08-04 14:35 481次 阅读
Cocos Creator v3.2 正式支持 HarmonyOS 多设备协同能力

开发者进阶宝典,HarmonyOS 职业认证全奉上

6 月 2 日,万众瞩目的 HarmonyOS 2 正式升级,截至 7 月 29 日,用户已突破 4....
的头像 话说科技 发表于 08-02 16:10 325次 阅读

简述HarmonyOS单元测试框架

作者:leidan、houjing ,华为软件测试工程师 测试是APP开发中一个重要的环节,在开发迭....
的头像 发表于 07-28 14:34 315次 阅读
简述HarmonyOS单元测试框架

当前HarmonyOS轻设备图形框架的总体特性介绍

HarmonyOS轻设备图形框架概述 HarmonyOS轻设备图形框架是一款面向带屏设备界面开发框架....
的头像 发表于 07-28 14:27 375次 阅读
当前HarmonyOS轻设备图形框架的总体特性介绍

解读新技术,解锁新玩法,HarmonyOS开发者日等你来报名!

HarmonyOS 2 的全新发布,为开发者带来哪些新特性,新功能和新玩法,7月31日·杭州我们一起....
的头像 物联网星球 发表于 07-14 10:37 1004次 阅读
解读新技术,解锁新玩法,HarmonyOS开发者日等你来报名!

harmonyos官网内测报名

第一批鸿蒙2.0系统的报名已经关闭,有很多小伙伴表示很遗憾没有赶上。第二批鸿蒙2.0系统现在已经开放....
的头像 汽车玩家 发表于 07-12 17:22 902次 阅读
harmonyos官网内测报名

harmonyos下载安装

华为系统的手机已经开启了升级功能,升级过后的手机整体看上去更加流畅,用户的体验感得到了最佳的提升,很....
的头像 汽车玩家 发表于 07-12 17:14 831次 阅读
harmonyos下载安装

harmonyos系统怎么样

         华为鸿蒙系统的发布代表着一个新的时代即将到来,鸿蒙系统不单单只是手机系统,它具有撬....
的头像 汽车玩家 发表于 07-12 16:52 1562次 阅读

华为harmony系统和安卓系统的区别

近几年来,随着智能手机硬件的更新迭代,手机系统也愈加成熟完善。我们今天在市面上能看到手机系统基本上可....
的头像 汽车玩家 发表于 07-12 16:13 1659次 阅读

华为Harmonyos是什么意思?

 华为推出首款自研操作系统,以‘鸿蒙’来命名,因此这个词广泛的进入大家的视野,那么大家知道‘鸿蒙’是....
的头像 Les 发表于 07-12 16:12 2861次 阅读

harmonyos系统怎么升级

华为系统的手机已经开启了升级功能,升级过后的手机整体看上去更加流畅,用户的体验感得到了最佳的提升,很....
的头像 汽车玩家 发表于 07-12 16:01 717次 阅读
harmonyos系统怎么升级

harmonyos是什么系统

自从华为鸿蒙OS2.0系统推出以后,有不少网友们就开始不断质疑鸿蒙OS系统是“Android系统换皮....
的头像 汽车玩家 发表于 07-12 15:54 4060次 阅读

华为鸿蒙官网报名教程

       第一批鸿蒙2.0系统的报名已经关闭,有很多小伙伴表示很遗憾没有赶上。第二批鸿蒙2.0系....
的头像 汽车玩家 发表于 07-11 14:33 603次 阅读

鸿蒙公测报名入口查询

       第一批鸿蒙2.0系统的报名已经关闭,有很多小伙伴表示很遗憾没有赶上。第二批鸿蒙2.0系....
的头像 汽车玩家 发表于 07-08 15:10 674次 阅读

华为鸿蒙公测报名入口

       第一批鸿蒙2.0系统的报名已经关闭,有很多小伙伴表示很遗憾没有赶上。第二批鸿蒙2.0系....
的头像 汽车玩家 发表于 07-07 16:03 767次 阅读