鸿蒙 开发静态共享包
HAR(HarmonyArchive)是HarmonyOS的静态共享包,用于模块间共享ArkUI组件、C++库和资源。其工程结构包含代码目录、资源文件和配置文件,支持C++代码编译为.so文件。创建HAR模块需在DevEco Studio中选择StaticLibrary模板,配置名称、设备类型和C++版本。编译后生成.har文件,可被其他模块引用或发布至ohpm仓库。注意事项包括C++代码处理方式
本文同步发表于我的微信公众号,微信搜索 程语新视界 即可关注,每个工作日都有文章更新
一、HAR(静态共享包)
-
HAR 是静态共享包,全称 Harmony Archive
-
可以包含代码、C++库、资源和配置文件
-
主要用于实现多个模块或多个工程之间共享 ArkUI 组件、资源等相关代码
与 HAP 的区别
-
HAR 不能独立安装运行在设备上
-
只能作为应用模块的依赖项被引用
二、HAR 模块工程结构
HAR模块名称/
├── libs/ # 存放编译后的 .so 文件
├── src/
│ └── main/
│ ├── cpp/
│ │ ├── types/ # 存放 C++ API 描述文件
│ │ │ └── liblibrary/ # 按 so 库维度划分的子目录
│ │ │ ├── Index.d.ts # 描述 C++ 接口的方法名、参数、返回值
│ │ │ └── oh-package.json5 # so 包的声明入口和包名信息
│ │ ├── CMakeLists.txt # CMake 构建脚本配置文件
│ │ └── napi_init.cpp # 共享包 C++ 代码源文件
│ └── Index.ets # 共享包导出声明的入口文件
└── (其他配置文件)
各目录/文件说明:
-
libs:用于存放编译生成的
.so动态库文件 -
src/main/cpp/types:按 so 库名称组织,存放 C++ API 的类型定义文件
-
Index.d.ts:描述 C++ 接口的详细规范(方法名、入参类型、返回类型)
-
oh-package.json5:声明 so 三方包的入口和名称
-
CMakeLists.txt:配置 C++ 代码的编译规则
-
napi_init.cpp:C++ 功能的实现源码
-
Index.ets:HAR 对外的 ArkUI 导出入口
三、创建 HAR 模块
3.1 创建步骤
-
右键工程目录顶部 → 选择
New > Module。 -
在 Choose Your Ability Template 界面中,选择 Static Library → 点击 Next。
-
在 Configure New Module 界面中,配置以下信息后点击 Finish:
3.2 模块配置参数
-
Module name:设置 HAR 模块的名称(例如
MyUtils) -
Device type:选择该 HAR 支持的设备类型(如 Phone、Tablet)
-
Enable native:是否启用 C++ 代码支持
-
C++ Standard:仅在开启 Enable native 时需配置,可选:
-
Toolchain Default -
C++11 -
C++14
-
注意:从 DevEco Studio 6.0.1 Beta1 开始,创建 HAR 模块时支持选择 C++ 版本。
四、编译 HAR 模块
4.1 编译方法
-
在 Project 窗口中选中要编译的 HAR 模块(例如
mylibrary)。 -
通过菜单栏选择 Build > Make Module 'mylibrary'。
-
编译完成后,会在模块下的
build目录中生成*.har格式的包文件。
4.2 编译输出
-
生成的 HAR 包可供当前工程的其他模块引用
-
也可上传至 ohpm 仓库,供其他开发者下载使用
五、注意事项
5.1 编译说明
-
C++ 代码处理:编译时不会直接将 C++ 源码打包进 HAR,而是将其编译成
.so文件,并放置在 HAR 包的libs目录下 -
资源联想依赖:编译过程中会生成
ResourceTable.txt资源索引文件。必须使用 DevEco Studio 构建 HAR,否则编辑器无法对 HAR 中的资源进行代码联想 -
本地依赖打包:
-
若使用 Hvigor 2.5.0-s 及以上版本,编译时会自动将
dependencies中位于本模块路径下的本地依赖打包进 HAR
-
5.2 排除文件
-
若部分源码或资源文件不需要打包到 HAR 中,可创建
.ohpmignore文件,在其中配置要忽略的文件或文件夹路径
六、总结
开发 HAR(静态共享包)的主要流程:
-
创建模块:通过 DevEco Studio 新建 Static Library 类型的模块,配置名称、设备类型及 C++ 支持。
-
开发编码:在生成的目录结构中添加 ArkUI 组件、C++ 代码或资源文件。
-
编译构建:使用 Build > Make Module 生成
.har文件。 -
使用共享:将 HAR 包用于工程内其他模块依赖,或发布到 ohpm 供外部使用。
HAR 是实现代码复用的重要机制,尤其适合于基础组件、通用工具类或底层 C++ 能力的封装与共享。
更多推荐



所有评论(0)