HarmonyOS Codelabs之Js2JavaCodegen JSFA调用PA工具

开发 前端 OpenHarmony
JS FA(Feature Ability)调用PA (Particle Ability)是使用基于JS扩展的类Web开发范式的方舟开发框架所提供的一种跨语言能力调用的机制,用于建立JS能力与Java能力之间传递方法调用、处理数据返回以及订阅事件上报的通道。

[[435106]]

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

1.介绍

如何用JS FA简单高效的调用PA能力?如果还不了解FA和PA概念的小伙伴可以点进链接去详细了解一下。

今天使用js2java-codegen工具重新体验了一把,嗯~,体验不错,来做个分享。

官方文档指导说明:

JS FA(Feature Ability)调用PA (Particle Ability)是使用基于JS扩展的类Web开发范式的方舟开发框架所提供的一种跨语言能力调用的机制,用于建立JS能力与Java能力之间传递方法调用、处理数据返回以及订阅事件上报的通道。开发者可以使用FA调用PA机制进行应用开发,但直接使用该机制需要开发者手动撰写大量模板代码,且模板代码可能与业务代码相互耦合,使得代码可维护性和可读性较差。

想要提升开发效率,开发者可以在DevEco Studio环境中借助js2java-codegen工具自动生成JS FA调用PA代码(目前仅支持InternalAbility调用方式),快速完成FA调用PA应用的开发。

接下来,通过一个简易计算器的实例(界面JS FA实现)看一下JS FA调用PA的开发步骤。

2.效果展示

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

3.搭建环境

安装DevEco Studio,详情请参考DevEco Studio下载

设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:

如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。

如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境

下载源码后,使用DevEco Studio 打开项目,模拟器运行即可。

真机运行需要将config.json中的buddleName修改为自己的,如果没有请到AGC上进行配置,参见 使用模拟器进行调试

4.项目结构

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

5.步骤讲解

5.1 配置js2java-codegen工具

工具会根据开发者提供的Java源码生成JS与Java两种语言的模板代码,其中Java模板代码用户无需关心,而JS模板代码需要用户手动调用,因此用户需要自主设置JS模板代码的生成路径。该参数位于ohos -> defaultConfig中,只需添加如下设置即可。

1.配置js代码存放路径 ----2.配置该工具开关

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

5.2 创建PA服务类,实现提供的服务接口

1.创建计算服务类(CalculateService.java) 并添加注解

注解有主要有3个,

@InternalAbility注解

类注解,用于被使用作InternalAbility的、包含实际业务代码的类(简称InternalAbility类)。只支持文件中public的顶层类,不支持接口类和注解类。包含一个参数:registerTo,值为需要注册到的Ability类全名。

@ExportIgnore注解

方法注解,用于InternalAbility类中的某些方法,表示该方法不暴露给JS侧来调用。仅对public方法有效。

@ContextInject注解

用于AbilityContext上的注解。该类由HarmonyOS的Java API提供,开发者可通过它获取API中提供的信息。我们一些功能可能会用到上下文,这个注解帮我们把上下文自动注入进来了。

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

2.实现提供的服务接口

见上图calculateResult函数。

5.3 调用工具编译生成代码

编译方法:Build–Build Haps(s)/App(s)----Build Haps(s)

生成的代码有两份,一份Java代码(CalculateServiceStub.java)

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

一份JS代码在上面配置的目录(CalculateService.js)

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

*// This file is automatically generated. Do not modify it!

5.4 编写JS 代码完成调用

1.在index.js 中引用生成的FA接口类 —2.创建FA接口实例----3.调用对应方法

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

5.5 编写页面布局代码(index.hml)

HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具-鸿蒙HarmonyOS技术社区

6.思考总结

1.通过js2java-codegen工具,让js FA调用PA思路变的清晰,注解很简单,生成代码也很便捷。

2.完成业务功能,不用去关注生成的代码。

7.完整代码

附件可以直接下载

https://harmonyos.51cto.com/resource/1495

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-02-24 16:00:59

Ability鸿蒙JS

2022-02-17 21:28:08

AbilityJSFA鸿蒙

2022-02-17 21:19:35

JSFA操作系统鸿蒙

2021-10-27 10:05:55

鸿蒙HarmonyOS应用

2021-09-10 15:13:41

鸿蒙HarmonyOS应用

2022-02-17 21:05:26

AbilityJS FAJava PA

2022-03-07 14:58:10

ArkUIJS FAJava

2021-07-08 09:42:04

鸿蒙HarmonyOS应用

2021-09-14 09:34:05

鸿蒙HarmonyOS应用

2021-09-18 09:57:20

鸿蒙HarmonyOS应用

2021-07-23 16:22:58

鸿蒙HarmonyOS应用

2022-05-19 15:33:42

JS通信接口鸿蒙

2021-11-01 10:21:36

鸿蒙HarmonyOS应用

2021-12-10 10:12:44

鸿蒙HarmonyOS应用

2022-02-28 15:28:17

CSSHarmonyOSJS

2021-09-06 14:58:23

鸿蒙HarmonyOS应用

2021-12-20 10:07:39

鸿蒙HarmonyOS应用

2022-05-20 14:34:20

list组件鸿蒙操作系统

2022-08-05 19:22:27

Service模板鸿蒙

2021-11-24 10:02:53

鸿蒙HarmonyOS应用
点赞
收藏

51CTO技术栈公众号