HarmonyOS鸿蒙Next中发布hsp是否支持直接发布源码?
HarmonyOS鸿蒙Next中发布hsp是否支持直接发布源码? 【问题描述】:发布hsp是否支持直接发布源码?需要对应用代码和依赖的共享包进行扫描
【问题现象】:发布hsp是否支持直接发布源码?需要对应用代码和依赖的共享包进行扫描,只有方舟字节码文件和d.ets类型声明文件
【版本信息】:不涉及
【复现代码】:不涉及
【尝试解决方案】:暂无
【解决方案】
- OpenHarmony三方库中心仓仅支持HAR共享包发布,不支持HSP共享包发布,从ohpm命令行工具1.3.0版本和ohpm-repo私仓1.1.0版本开始,支持动态共享包HSP包以.tgz文件形式发布到ohpm-repo。
- 动态共享包HSP包不能直接发布在ohpm-repo内,需要先转化为.tgz包,转换方法见:编译HSP模块,发布方式参考将三方库发布到ohpm-repo。
更多关于HarmonyOS鸿蒙Next中发布hsp是否支持直接发布源码?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
发布HSP包后引入到项目中是否能够看到源码?因为本地需要扫描项目和依赖代码,
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
发布HSP包后引入到项目中是否能够看到源码?因为本地需要扫描项目和依赖代码。
无法直接从私仓的HSP中拿到源码,HAR有源码模式,可以使用源码模式进行调试开发,参考源码HAR:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-hvigor-build-har#section1031922925716,
一、HSP发布形式与源码支持
- HSP默认发布形式
HSP动态共享包不支持直接发布源码。根据构建规则,HSP编译后会生成 .har 文件(包含编译后的字节码文件 .abc 和声明文件 .d.ets),这类文件更适合作为发布产物。
- 字节码HSP特征:
- 在 ets 目录下存在 .abc 文件(ArkTS编译后的字节码);
- 在 oh-package.json5 中设置 “byteCodeHar”: true,标识为字节码包。
- 源码HSP的特殊情况
- 若未满足上述两个条件,则视为源码HSP。但官方不建议直接发布源码HSP,因为可能暴露业务逻辑且存在安全风险。
二、代码扫描要求
在发布HSP或引用其他共享包时,需对代码及依赖进行扫描,确保符合以下安全规范:
- 允许的文件类型
- 方舟字节码文件(.abc):ArkTS代码编译后的产物,不可逆向为源码;
- 类型声明文件(.d.ets):仅包含类型定义,不涉及具体实现;
- 资源文件(如 .json、图片等)。
- 禁止的内容
- 源码文件(如 .ets 或 .ts 文件);
- 未经混淆的敏感配置或硬编码信息。
三、安全措施与工具支持
- ArkGuard源码混淆工具
- 自动保护远程HAR/HSP包的导出名称(如类名、接口名),防止反编译后暴露逻辑;
- 本地源码HSP需手动配置:通过 proGuard-rules.pro 添加混淆规则保护敏感代码。
- 构建配置建议
在模块的 build-profile.json5 中设置 strip: false,保留调试信息并生成带完整符号表的 .so 文件(适用于含C++代码的HSP),但发布时需移除调试信息以避免符号表泄露。
四、总结
- 推荐发布形式:优先使用字节码HSP(含 .abc 和 .d.ets 文件),通过构建工具自动生成符合要求的发布包。
- 扫描重点:确保发布产物中无源码文件,依赖的三方包也需进行相同安全校验。
- 调试与发布分离:调试阶段可使用源码HSP,但发布前必须切换为字节码模式并通过扫描工具验证。
HarmonyOS Next的HSP不支持直接发布源码。HSP以二进制形式分发,包含编译后的代码和资源,不包含源代码。这种设计保护了开发者的知识产权,同时确保了模块的安全性和性能。
在HarmonyOS Next中,发布HSP(Harmony Shared Package)时,不支持直接发布源码。
根据当前的HSP发布规范与安全要求:
- 发布到应用市场的HSP包,其内容必须是经过编译和混淆处理的方舟字节码文件(.abc文件)。
- 同时需要提供对应的类型声明文件(.d.ets文件),以供主应用或其他依赖方在开发时进行类型检查和API提示。
- 源码(.ets, .ts等)不会包含在最终发布的HSP包中。
您提到的“需要对应用代码和依赖的共享包进行扫描”,这一流程通常是针对您本地的源代码进行的,属于开发阶段的合规与安全检查环节。检查通过后,您需要将项目编译构建,生成由字节码和声明文件组成的HSP包,再进行发布。
因此,您当前的发现(HSP包中只有方舟字节码和.d.ets文件)符合预期,是正确的发布形态。

