
鸿蒙打包———构建的hap包跑了,找不到? 原创
无论是Flutter项目,使用VS Code打包;还是ArkTs原生项目,使用DevEco Studio打包,都找不到Hap?
我刚开始也遇到了这个情况,后来有朋友过来咨询这个问题,我就这里分享一下吧,虽然很简单,但是找不到很挠头,也费时间。
Hap去哪里打包?
通过顶部菜单栏找到构建->编译Hap(s)APP(s)->编译Hap(s)
去哪里找?
项目目录下的build中并没有?是在entry目录下面的build中
补充,Hap包是什么?
官方解释:
HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包,其主要分为两种类型:entry和feature。
entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装。
应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包。
我觉得呢,就是一个模块包,一个APP中至少有一个模块,所以至少一个Hap包,也可能是多个Hap包。
与APP包的区别
APP包括所有的模块的所有功能,是发布到应用市场的基本单元。
补充 HAP 和 HSP
HAR(Harmony Archive)是静态共享包,包含代码、C++库、资源和配置文件。HAR支持多个模块或工程共享ArkUI组件和相关代码。
HSP(Harmony Shared Package)是动态共享包,包含代码、C++库、资源和配置文件,用于实现代码和资源的共享。HSP跟随宿主应用的App包一起发布,与宿主应用同进程,具有相同的包名和生命周期。
HSP编译生成的HAR包仅包含配置文件和接口定义,不包含代码逻辑。该HAR包仅用于开发阶段,不会影响App包的大小。
HAP包拆包只能在module.json文件的dependencies字段看到引用的HSP模块名,看不到引用的HAR。HAR在编译时已打包在HAP包里,而HSP是单独成包的。.app文件安装时,HSP与HAP处于同一级别。
思考
这里就要说为什么默认模块有APP名称和图标设置,并且APP的项目配置AppScope中也有一套APP名称和图标设置了。因为可以打不同的包是一个方面的原因,也可能基于这个考虑,这个是我目前的理解。后续在完善这个想法。
参考
