动态共享包是否可以发布
===========

#### 问题现象

动态共享包是否支持发布？是否支持源码发布？如何引用发布后的动态共享包？

#### 背景知识

[HSP](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/in-app-hsp)（Harmony Shared Package）是动态共享包，包含代码、C++库、资源和配置文件，通过HSP可以实现代码和资源的共享。HSP不支持独立发布上架，而是跟随宿主应用的APP包一起发布，与宿主应用同进程，具有相同的包名和生命周期。

*   应用内HSP：在编译过程中与应用包名（bundleName）强耦合，只能给某个特定的应用使用。
*   集成态HSP：构建、发布过程中，不与特定的应用包名耦合；使用时，工具链支持自动将集成态HSP的包名替换成宿主应用包名，并且会重新签名生成一个新的HSP包，作为宿主应用的安装包，这个新的HSP也属于宿主应用HAP的应用内HSP。

#### 解决方案

*   OpenHarmony三方库中心仓仅支持HAR共享包发布，不支持HSP共享包发布，如需在应用内共享HSP，从ohpm命令行工具1.3.0版本和ohpm-repo私仓1.1.0版本开始，可将HSP共享包以.tgz文件形式发布到ohpm-repo。
*   HSP不支持源码发布，仅支持以.tgz文件形式发布到ohpm-repo。无法直接从私仓的HSP中拿到源码，HAR有源码模式，可以使用源码模式进行调试开发，参考[源码HAR](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section1031922925716)。
*   动态共享包HSP包不能直接发布在ohpm-repo内，需要以.tgz文件形式发布共享，以发布集成态HSP为例参考如下步骤：
    *   创建编译集成态HSP：
        1.  创建方-按如下步骤新建HSP模块publish\_hsp：
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3e/v3/DwMze43mRUOFp5i13K-Dxw/zh-cn_image_0000002658928951.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=AE2565C0B0FDB1FAFDC1A2A2CAC411E65BD48717420D0286EF423235CA9414F6 "点击放大")
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/79/v3/yu9nCxXvTwimPIPHgsiifw/zh-cn_image_0000002658808995.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=A5656FC97163CAC6E60E92719B54706105AE753CCB70D8B5AC89E260E8E2BD95 "点击放大")
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/8e/v3/RJ0PHSGtQjKFtIH7l1WyBA/zh-cn_image_0000002628409730.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=D1B1913B6F53803BA17ADD107E8800B7A3334F10043B52E2E7E3046F3EA2624D "点击放大")
            
        2.  创建方-[工程级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile-app)中useNormalizedOHMUrl配置项设置为true。
        3.  创建方-[模块级build-profile.json5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-profile)中integratedHsp配置项设置为true。
        4.  点击工具栏右上角Product图标切换编译模式为release：
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f/v3/SNJDFcXDTVumwrUuKegGEg/zh-cn_image_0000002628569632.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=750C5983F64CBFDFDD0DFDDD0F8C44A56B61E9219326D7CF2E9A45FBF94E869D "点击放大")
            
        5.  选中publish\_hsp模块的根目录，点击Build图标，选择Make Module 'publish\_hsp'启动构建可得到.tgz产物：
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/b9/v3/y8a7AJMOTDWydwBaQnA8pQ/zh-cn_image_0000002658928953.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=14F44FAEC8F633CF60CC119FF62D222208295900D7AECC991EC8E2AFA33C2F16)
            
            ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/55/v3/yJpOcDuiQ2uMMRkIbD2PMA/zh-cn_image_0000002658808997.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=E0AAF3B0444820723A88D4D0946E90067AA5F665AD9F3CFE449C6701724CD0BC "点击放大")
            
    *   发布HSP：
        
        使用[ohpm publish](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-publish)命令即可将publish\_hsp-default.tgz上传至ohpm-repo私仓，私仓搭建参考[ohpm-repo私仓搭建工具](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-ohpm-repo)：
        
        ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3d/v3/1nPJyMxLRk63TCakmoeV5Q/zh-cn_image_0000002628409732.png?HW-CC-KV=V1&HW-CC-Date=20260709T134425Z&HW-CC-Expire=86400&HW-CC-Sign=032DDB78C4AEA92632B76B6AA28DDE0F298C865CBDF58226DE99406C41BF18F9 "点击放大")
        
    *   引用已使用的集成态HSP：
        1.  使用方-工程级build-profile.json5中useNormalizedOHMUrl配置项设置为true。
        2.  使用方-在主模块的oh-package.json5配置文件dependencies配置依赖私有库：publish\_hsp: "1.0.0"。