开发静态共享包
=======

[HAR（Harmony Archive）](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/har-package)是静态共享包，可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP，不能独立安装运行在设备上，只能作为应用模块的依赖项被引用。本文将介绍如何创建HAR模块、如何编译共享包。

HAR模块的工程结构如下图所示：

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/11/v3/D9DS_8yyShSLypRwuIq9SA/zh-cn_image_0000002624994141.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=A68BB88FC325272EAE465EC56C9F50FB8B9822361C281A62F41E192730A3773D)

相关字段的描述如下，其余字段与Entry或Feature模块相关字段相同，可参考[工程介绍](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-project-overview)。

*   **libs**：用于存放.so文件。
*   **src > main > cpp > types**：用于存放C++ API描述文件，子目录按照so维度进行划分。
*   **src > main > cpp > types** **> liblibrary > Index.d.ts**：描述C++接口的方法名、入参、返回参数等信息。
*   **src > main > cpp > types** **> liblibrary > oh-package.json5**：描述so三方包声明文件入口和so包名信息。
*   **src > main > cpp >** **CMakeLists.txt**：CMake配置文件，提供CMake构建脚本。
*   **src > main > cpp > napi\_init.cpp**：共享包C++代码源文件。
*   **Index.ets**：共享包导出声明的入口。

从DevEco Studio 6.0.1 Beta1开始，创建HAR模块时支持选择C++版本。

#### 创建HAR模块

1.  鼠标移到工程目录顶部，单击右键，选择**New > Module**，在工程中添加模块。
2.  在**Choose Your Ability Template**界面中，选择**Static Library**，并单击**Next**。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/57/v3/byiON9lER5ivCLYqit11gA/zh-cn_image_0000002625074283.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=C7518E8928C63812C80E8C6B784B49A901EBF1EC068CA775345C6E4AFE7B299E)
    
3.  在**Configure New Module**界面中，设置新添加的模块信息，设置完成后，单击**Finish**完成创建。
    
    *   **Module name**：新增模块的名称。
    *   **Device type**：支持的设备类型。
    *   **Enable native**：创建用于调用C++代码的模块。
    *   **C++ Standard：**C++标准库，取值包括：Toolchain Default、C++11、C++14，仅打开Enable native时需要配置。从DevEco Studio 6.0.1 Beta1开始支持。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/65/v3/-AkUDtAUTASVQrbBXdC7oA/zh-cn_image_0000002624994139.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=D27B09F9DD1D84400E8377BEB45AB39C2F74D79047E8AF4721D52027AD1050A1)
    
    创建完成后，会在工程目录中生成HAR模块及相关文件。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/08/v3/Zeej4VmST8SxqaCTEElOtw/zh-cn_image_0000002624994137.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=71F8D145637412408A05F5C732BAE6E27807BD746D185BC8C11BD92F82FCD6F5)
    

#### 编译HAR模块

开发完HAR模块后，选中模块名，然后通过DevEco Studio菜单栏的**Build > Make Module ${libraryName}**进行编译构建，生成HAR。HAR可供工程其他模块引用，或将HAR上传至ohpm仓库，供其他开发者下载使用。更多使用说明请参考[构建HAR](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har)。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/fb/v3/s5dYB_LaTYmcSdDI05gmaw/zh-cn_image_0000002625074279.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=2CC874D16B11662679220F5A027314294DA1B4C19892D1C98F97B3ADBFF944FC)

编译构建的HAR可在模块下的build目录下获取，包格式为\*.har。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a1/v3/-Nxwo5dbS3u-Dt3_jPB4fw/zh-cn_image_0000002625074281.png?HW-CC-KV=V1&HW-CC-Date=20260612T073818Z&HW-CC-Expire=86400&HW-CC-Sign=EB6975B73F0099C14A4AFE819627C6A3676E9D163A81CF24850B343D2BFB5494)

在编译构建HAR时，请注意以下事项：

*   编译构建HAR的过程中，不会将模块中的C++代码直接打包进.har文件中，而是将C++代码编译成动态依赖库.so文件放置在.har文件中的libs目录下。
*   在编译构建HAR的过程中，会生成资源文件ResourceTable.txt，以便编辑器可以对HAR中的资源文件进行联想。因此，如果不使用DevEco Studio对HAR进行构建，则DevEco Studio的编辑器会无法联想HAR中的资源。
*   如果使用的Hvigor为2.5.0-s及以上版本，在编译构建HAR的过程中，会将dependencies内处于本模块路径下的本地依赖也打包进.har文件中，如果在打包后发现缺少部分本地依赖（如cpp/types目录）请参见[FAQ](https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-compiling-and-building-23)。