02 开发 HAR 包
1 针对 ArkUI 组件开发
1.1 新建 Static Library
打开 DevEco Studio,如果有工程直接打开工程,如果没有工程则新建一个工程,然后再进行 HAR 包开发。 1)在菜单栏选择 File > New > Module,选择 Static Library,点击【Next】

2)在新模块配置界面,对 Module name,Device type 进行配置,点击【Finish】,创建模块。 注意:如果需要创建一个用于调用 C/C++ 代码的共享模块,打开【Enable native】即可创建。

模块内容如图所示(Enable native开启)

1.2 导出 ArkUI 组件
通过 export 导出 ArkUI 组件,示例如下:
// 文件路径:library/src/main/ets/components/mainpage/MainPage.ets
import { hilog } from '@kit.PerformanceAnalysisKit';
import testNapi from 'liblibrary.so';
const DOMAIN = 0x0000;
@Component
export struct MainPage {
@State message: string = 'Hello World';
build() {
Row() {
Column() {
Text(this.message)
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.onClick(() => {
const result = testNapi.add(2, 3);
this.message = `Welcome! Test NAPI 2 + 3 = ${result}`;
hilog.info(DOMAIN, 'testTag', 'Test NAPI 2 + 3 = %{public}d', result);
})
}
.width('100%')
}
.height('100%')
}
}HAR 对外暴露的接口,在 Index.ets 导出文件中声明如下所示:
// 文件路径:library/Index.ets
export { MainPage } from './src/main/ets/components/MainPage';因为 M-K1HSE 的固件是 32 位系统,所以需要在 library 模块里的模块级 build-profile.json5 文件中的 buildOption -> externalNativeOption 中添加下述代码:
// 文件路径:library/build-profile.json5
"abiFilters": [
'armeabi-v7a',
'arm64-v8a'
]
在菜单栏中选择 Build -> Make Module ${libraryName} 进行编译构建,生成 HAR 包。

等待编译完成后,在 library/build/default/outputs/default 目录中,可以找到 library.har,即表示生成 HAR 包成功。

1.3 引用 ArkUI 组件
在新的工程中需要引用 HAR 包的 ArkUI 组件,首先要进行 HAR 包依赖的配置,引用三方 HAR 包,包括从 ohpm 仓进行安装、本地 HAR 包的引用两种方式。 本文档从本地 HAR 包的引用作为案例,后续将更新从 ohpm 仓安装 HAR 包
1)首先创建一个新的 Empty Ability 工程,然后将我们生成的 HAR 包复制到 entry 模块目录下

2) 在需要引入三方包的模块的 oh-package.json5 中设置本地 HAR 包,配置如下:
"dependencies": {
"library": "file:./library.har" // 以当前oh-package.json5所在目录为起点的相对路径。
}
3)点击【Sync Now】进行同步,等待同步完成。 4)通过 import 引入 HAR 导出的 ArkUI 组件,示例如下所示:
//文件路径: entry/src/main/ets/pages/Index.ets
import { MainPage } from 'library';
@Entry
@Component
struct Index {
build() {
Row() {
// 引用HAR的ArkUI组件
MainPage()
}
.height('100%')
}
}
5)因为 M-K1HSE 的固件是 32 位系统,所以需要在 entry 模块里的模块级 build-profile.json5 文件中的 buildOption 中添加下述代码:
// 文件路径:entry/build-profile.json5
"externalNativeOptions": {
"abiFilters": [
'armeabi-v7a',
'arm64-v8a'
]
},
6)进行签名配置,可参考 01 Hello World -> 2 启动第一个应用程序 -> 2.2 签名文件 7)如未进行过 SysCap 属性调整,可参考 01 Hello World -> 2 启动第一个应用程序 -> 2.3 SysCap 属性调整 8)完成上述操作,并同步后,运行应用程序到板卡中
示例应用效果
应用启动显示 Hello World 文本当点击 Hello World 文本切换为 Welcome! Test NAPI 2 + 3 =5
