HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具 原创 精华
本文正在参与优质创作者激励
@toc
HarmonyOS Codelabs 之 Js2javaCodegen JSFA调用PA工具
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.效果展示
3.搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
下载源码后,使用DevEco Studio 打开项目,模拟器运行即可。
真机运行需要将config.json中的bundleName修改为自己的,如果没有请到AGC上进行配置,参见 使用模拟器进行调试 。
4.项目结构
5.步骤讲解
5.1 配置js2java-codegen工具
工具会根据开发者提供的Java源码生成JS与Java两种语言的模板代码,其中Java模板代码用户无需关心,而JS模板代码需要用户手动调用,因此用户需要自主设置JS模板代码的生成路径。该参数位于ohos -> defaultConfig中,只需添加如下设置即可。
1.配置js代码存放路径 ----2.配置该工具开关
5.2 创建PA服务类,实现提供的服务接口
1.创建计算服务类(CalculateService.java) 并添加注解
注解有主要有3个,
@InternalAbility注解
类注解,用于被使用作InternalAbility的、包含实际业务代码的类(简称InternalAbility类)。只支持文件中public的顶层类,不支持接口类和注解类。包含一个参数:registerTo,值为需要注册到的Ability类全名。
@ExportIgnore注解
方法注解,用于InternalAbility类中的某些方法,表示该方法不暴露给JS侧来调用。仅对public方法有效。
@ContextInject注解
用于AbilityContext上的注解。该类由HarmonyOS的Java API提供,开发者可通过它获取API中提供的信息。我们一些功能可能会用到上下文,这个注解帮我们把上下文自动注入进来了。
2.实现提供的服务接口
见上图calculateResult函数。
5.3 调用工具编译生成代码
编译方法:Build–Build Haps(s)/App(s)----Build Haps(s)
生成的代码有两份,一份Java代码(CalculateServiceStub.java)
一份JS代码在上面配置的目录(CalculateService.js)
==*// This file is automatically generated. Do not modify it!==
5.4 编写JS 代码完成调用
1.在index.js 中引用生成的FA接口类 —2.创建FA接口实例----3.调用对应方法
5.5 编写页面布局代码(index.hml)
6.思考总结
1.通过js2java-codegen工具,让js FA调用PA思路变的清晰,注解很简单,生成代码也很便捷。
2.完成业务功能,不用去关注生成的代码。
7.完整代码
附件可以直接下载
js2java-codegen确实是非常好用的工具,感谢分享。