HarmonyOS鸿蒙Next中怎么从工程中提取出HAP包文件?

HarmonyOS鸿蒙Next中怎么从工程中提取出HAP包文件? 滴滴滴滴滴滴滴滴滴滴

7 回复

工程是啥意思?deveco里的项目?build-build haps/apps,

更多关于HarmonyOS鸿蒙Next中怎么从工程中提取出HAP包文件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


【解决方案】

  • HAR包编译后会同步合入HAP包中,不会独立存在,参考HAR包介绍
  • HAP包具体的生成位置可以参考\entry\build\default\outputs\default\entry-default-unsigned.hap,编译后的HAP包的结构中,主要包含resources资源目录、ets代码文件目录、其他配置文件。

【背景知识】

  • APP Pack(Application Package):应用/元服务发布形态为APP Pack(Application Package),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成。APP是发布上架到应用市场的基本单元,但是不能在设备上直接安装和运行。
  • HAP(Harmony Ability Package):HAP是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。
  • HAR(Harmony Archive):HAR是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。
  • HSP(Harmony Shared Package):HSP是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。

【解决方案】

通过背景知识的介绍可知,要想把HAR、HSP、HAP三种类型的包都打包成APP包,首先需要先打包得到HSP/HAR,然后打包得到HAP包,最后再打出APP Pack包。具体操作步骤如下:

  1. 首先需要将工程打包成HSP/HAR,详细步骤和背景可参考构建HAR。在创建模块那一步选择“Shared Library”即为HSP工程。
  2. 然后需要将HSP/HAR打包成HAP包,可通过IDE顶部菜单栏选择Build>Build Hap(s)/APP(s)>Build Hap(s)快速完成HAP包构建。
  3. 最后需要将HAP包打包成APP包,过程可参考将多工程的HAP打包成一个App
  4. HAR包编译后会同步合入HAP包中,不会独立存在,参考HAR包介绍
  5. HAP包具体的生成位置可以参考\entry\build\default\outputs\default\entry-default-unsigned.hap,编译后的HAP包的结构中,主要包含resources资源目录、ets代码文件目录、其他配置文件。

关于打包,更多常见问题请参考程序打包FAQ

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

扫描工程中 .hap 结尾的文件

在HarmonyOS Next中,HAP包文件位于工程的build/default/outputs/default目录下。编译工程后,系统会自动在该目录生成对应的HAP文件。

在HarmonyOS Next中,从工程中提取HAP包文件主要有以下几种方式,具体取决于您的开发环境和构建流程:

1. 通过DevEco Studio直接构建生成

这是最直接和常用的方法。在完成代码开发后:

  • 在菜单栏选择 Build > Build Hap(s)
  • 或者,在右侧的 Project 视图中,右键点击工程模块,选择 Build > Build Hap(s)
  • 构建成功后,HAP包文件默认生成在工程目录下的 build > outputs > defaultbuild > outputs > hap > debug (调试版本) / release (发布版本) 路径中。

2. 通过命令行构建生成

您可以使用HarmonyOS SDK提供的命令行工具(如 hvigorwhpm)进行构建,这适用于自动化脚本或持续集成(CI)环境。

  • 在工程根目录打开命令行终端。
  • 运行构建命令,例如:
    # 对于AppScope和多个HAP模块的工程,在根目录执行:
    ./gradlew assembleHap
    # 或使用hvigorw
    hvigorw assembleHap
    
  • 构建产物同样会输出到上述 build/outputs/ 目录下的对应路径中。

3. 从已签名的应用包(.app)中提取

如果您已经拥有一个签名的APP包(后缀为 .app),它是一个压缩包,可以手动解压以获取其中的HAP文件。

  • .app 文件的后缀名改为 .zip
  • 使用解压工具(如系统自带的归档管理器或第三方软件)解压该ZIP文件。
  • 解压后的文件夹内即包含一个或多个HAP包文件(后缀为 .hap)。

关键点说明:

  • HAP位置:无论通过哪种方式构建,最终的HAP文件都位于工程模块目录的 build/outputs/ 子目录下,请根据构建类型(Debug/Release)和输出格式(默认或Hap)进行查找。
  • 签名要求:用于正式发布或安装到真机上的HAP必须经过签名。通过DevEco Studio的 Build > Build App(s) 或生成Release版HAP时会自动使用配置的签名文件。
  • 多HAP工程:如果工程包含多个模块(例如一个Entry和一个Feature),每个模块都会生成独立的HAP文件。

请根据您的具体构建场景选择相应的方法。

回到顶部