作为一名鸿蒙开发的开发者,我深知鸿蒙包管理体系的重要性。鸿蒙生态发展得越来越壮大,能否吃透这套包管理机制,直接关系到咱们开发出来的应用质量和用户体验。鸿蒙系统推出的这套包管理体系很有特色,集成了 HAR(静态共享库)、HSP(动态共享库)、HAP(带有界面的库)和 APP(程序打包后的文件库)这几种不同类型的应用程序包,这就像是给咱们开发者配备了一套 “超级工具箱”,帮助咱们搭建高性能、易维护的应用。

        一、鸿蒙应用包的多样形态

HAR:静态共享库​

HAR 属于静态共享库,在编译阶段就能实现代码复用。平时开发时,我们会把一些通用的代码和资源整合起来,打包成 HAR。这些 HAR 既可以作为二方库发布到 OHPM 私仓,方便公司内部其他项目使用;也能作为三方库发布到 OHPM 鸿蒙中心仓,供更多同行开发者使用。但它有个特点,当多个项目依赖同一个 HAR 时,每个项目编译时,HAR 的代码和资源都会跟着一起编译,最终不同项目的编译产物里,会出现重复的代码和资源。​

HSP:动态共享库​

HSP 是动态共享库,主打运行时复用代码和资源。要是项目里多个 HAP 都需要共享代码和资源,用 HSP 就能避免应用包体积过大,实现资源的高效利用。和 HAR 不一样,HSP 的代码和资源是独立编译的,运行时,进程里只会有一份 HSP 代码和资源。而且,HSP 采用按需加载的方式,用到的时候才会加载到内存里,这样一来,应用的启动速度和运行效率都能大幅提升。不过,使用 HSP 有一些前提条件,HSP 及其使用方都得基于 Stage 模型,采用 esmodule 编译模式,并且不能在配置文件里声明 abilities、extensionAbilities 标签。​

HAP:带有界面的库​

HAP 全称 Harmony Ability Package,它是鸿蒙应用安装和运行的基本单位,整个设计围绕 Ability 组件展开。HAP 可以分为 Entry 和 Feature 两种。Entry 相当于应用的 “门面担当”,负责实现应用的入口界面、图标,以及核心功能,用户启动应用时,首先加载的就是 Entry。Feature 则用来实现应用的特定功能模块,我们可以根据功能需求,把应用拆分成多个 Feature 模块,这样后续维护和扩展功能就更方便了。​

APP:程序打包后的文件库​

鸿蒙系统的应用软件包采用 APP Pack 的形式发布,它由一个或多个 HAP,再加上描述每个 HAP 属性的pack.info组成。这种结构让我们能把多个 HAP 组合成一个完整的应用包,不管是分发还是安装,都更便捷。

二、精妙运用包管理策略,显著提升开发效率

选择合适的共享库,优化包体大小

在多包场景下,如果多个 HAP 或 HSP 都依赖 HAR,打包后很容易出现代码和资源冗余的问题。这个时候,换成 HSP 就能很好地复用资源,缩小包体大小。另外,我们还可以借助扫描工具对 App 包进行扫描,通过设置不同参数,扫描指定路径下的 App、HAP、HSP 包内容,生成检测报告。这份报告能帮我们优化包结构,排查潜在问题。要是项目里有 so 库,我们可以在应用模块配置文件 module.json5 里,把 compressNativeLibs 字段改成 true,重新编译、打包,就能把 so 库文件以压缩形式打包进应用,进一步减小包体大小。

运用分包策略,提升元服务性能

元服务在鸿蒙生态里很重要,它免安装、打开速度快。为了保证元服务能快速启动,对 HAP 和 HSP 的文件大小有严格限制,单个元服务包不能超过 2M,所有包加起来不能超过 10M。要是单个 HAP 或 HSP 超过 2M,就得进行分包操作。在元服务的分包模式里,HAP 层用来区分同一个项目面向的不同产品;HSP 层为 HAP 层提供业务支持;HAR 层作为公共库,提供基础函数和工具。它们的依赖关系一般是 HAP -> HSP -> HAR 或者 HAP -> HAR。我们还能通过配置预加载,让系统提前下载和安装可能用到的分包模块,这样用户进入后续模块时,速度会更快。

总的来说,鸿蒙包管理体系功能丰富、灵活。只要我们合理运用这些特性,就能开发出高性能、用户体验好的鸿蒙应用。

#HarmonyOS应用开发工具##DevEco Studio#

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐