HarmonyOS 5.0应用开辟——应用打包HAP、HAR、HSP

打印 上一主题 下一主题

主题 962|帖子 962|积分 2896

【高心星出品】

  
应用打包HAP、HAR、HSP

一个应用通常会包罗多种功能,将差异的功能特性按模块来分别和管理是一种精良的设计方式。在开辟过程中,我们可以将每个功能模块作为一个独立的Module进行开辟,Module中可以包罗源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。这种模块化、松耦合的应用管理方式有助于应用的开辟、维护与扩展。
Module范例

Ability范例的Module: 用于实现应用的功能和特性。每一个Ability范例的Module编译后,会天生一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的根本单位,一个应用中可以包罗一个或多个HAP包,具体包罗如下两种范例。


  • entry范例的Module:应用的主模块,包罗应用的入口界面、入口图标和主功能特性,编译后天生entry范例的HAP。每一个应用分发到同一范例的设备上的应用程序包,只能包罗唯逐一个entry范例的HAP。
  • feature范例的Module:应用的动态特性模块,编译后天生feature范例的HAP。一个应用中可以包罗一个或多个feature范例的HAP,也可以不包罗。
Library范例的Module: 用于实今世码和资源的共享。同一个Library范例的Module可以被其他的Module多次引用,公道地使用该范例的Module,能够降低开辟和维护本钱。Library范例的Module分为Static和Shared两种范例,编译后会天生共享包。


  • Static Library:静态共享库。编译后会天生一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
  • Shared Library:动态共享库。编译后会天生一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。
HAP

HAP(Harmony Ability Package)是应用安装和运行的根本单元。HAP包是由代码、资源、第三方库、配置文件等打包天生的模块包,其重要分为两种范例:entry和feature。
entry:应用的主模块,作为应用的入口,提供了应用的基础功能。
feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备范例进行选择性安装。
应用程序包可以只包罗一个基础的entry包,也可以包罗一个基础的entry包和多个功能性的feature包。
创建的基础项目就是包罗一个entry HAP的项目,也可以通过如下方法创建feature的HAP。

feature HAP的模块是紧跟entry HAP的模块,如果entry HAP的模块运行设备范例是手机,那么feature HAP模块的运行范例只能选择手机,feature HAP就相当于entry HAP的特性模块,给主模块提供特性功能的入口,主模块只能路由到特性模块,无法实现资源依靠和模块依靠,也就是编译期feature会打包成单独的HAP包,可以独立运行。
在运行多HAP的应用的时候需要配置运行模式:

HAR

HAR(Harmony Archive)是静态共享包,可以包罗代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相干代码。三方库的library根本都是HAR。
创建HAR


建立依靠


在entry的oh-package.json5中添加对于HAR的library的依靠,背面就可以使用对应的资源、类、方法和组件。
HAR共享内容

在HAR的index.ets中标志要对外共享的内容。

剩下的就可以直接在引用的模块中直接使用。
对于资源的引用:由于HAR在编译期就会跟引用的模块放在一起,所以资源引用可以当作同一个模块中的引用。
HSP

HSP(Harmony Shared Package)是动态共享包,可以包罗代码、C++库、资源和配置文件,通过HSP可以实今世码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有雷同的包名和生命周期。
创建HSP


建立依靠同上

HSP共享内容同上

但是,对于资源的引用有所差异,在编译期HSP会独立编译成HSP包,所以引用资源的时候,需要参加HSP包名称。
  1. //这里的[library1]就是HSP模块名称
  2. Image($r('[library1].media.zgl')).width(80).height(80)
复制代码
HAR VS HSP

共享包范例编译和运行方式发布和引用方式HARHAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份雷同拷贝。留意:HAR在编译之后就只会存在于依靠方包内里,不会有单独的HAR包。HAR除了支持应用内引用,还可以独立打包发布,供其他应用引用。HSPHSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。HSP一般随应用进行打包,当前支持应用内和集成态HSP。应用内HSP只支持应用内引用,集成态HSP支持发布到ohpm私仓和跨应用引用。

编译后的包:从图内里可以看到HAR编译期已经编译到所依靠的模块内里去了。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

泉缘泉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表