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中的buddleName修改為自己的,如果沒有請到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.完整代碼
附件可以直接下載
https://harmonyos.51cto.com/resource/1495