HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小

HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小

自己写的组件库构建出har,体积较大,有300多k,都有什么原因能造成体积很大呢。怎么优化以减小这个体积呢。


更多关于HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

【背景知识】

减小应用包大小是提升应用下载和安装体验的重要方式。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用包体积大小,减少空间占用,从而达到提升应用下载和安装速度的目的。在了解如何优化包大小之前,需要先了解HarmonyOS应用的应用程序包结构。在进行应用程序包大小优化分析时,可以使用扫描分析App包工具,根据输出的检测报告,采取相应措施优化应用。

【解决方案】

优化应用包大小主要有以下手段:

  • 对于含有so库的app工程,可以配置so库压缩选项,通过压缩so库来减小应用包大小。当前DevEco Studio默认打包应用时不压缩so库文件,配置so压缩选项后,DevEco Studio会将so库文件以压缩形式打包到包中,从而减小应用包大小。

    配置方法:修改应用模块配置文件module.json5中的compressNativeLibs字段,将值配置为true,重新编译、打包应用。

  • 应用存在多包(HAP、HSP)的场景时,可以使用HSP动态共享包在应用的多个包(HAP、HSP)之间共享代码和资源,消除使用HAR静态共享包造成的多包(HAP、HSP)间代码和资源的重复拷贝,从而减小应用包大小。参考文档:多包场景下使用HSP共享代码和资源

  • 使用ohpm的override机制或者开启resolve_conflict解决依赖冲突减少依赖包导致的重复编译问题。对于ohpm 1.5.0之前的版本,如果hap依赖了不同版本的har(如下图中V1版本的harC和V2版本的harC),在打包hap时,默认会把V1和V2两个版本的harC都打包到包中。开发者可以使用ohpm的override机制,指定只打包一份。

    如果使用的是ohpm 1.4.0 版本,可以使用override机制,开发者可以在项目级别的 oh-package.json5 (即项目根目录下的 oh-package.json5)文件中添加 overrides 配置,将依赖树中的依赖替换为另一个版本。替换的版本既可以是一个具体的版本号,也可以是本地存在的HAR包或源码目录。

  • 将用户不常用功能作为按需加载模块。参考文档:按需分发

更多关于HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


将 .har 改为 .zip,解压出来看一下。看看哪些文件比较大,针对性优化

在HarmonyOS Next中减小har组件库体积的方法:

  1. 使用ProGuard进行代码混淆和优化
  2. 移除未使用的资源文件(图片/字体等)
  3. 检查依赖关系,删除不必要的依赖库
  4. 使用OHPM的tree-shaking功能自动移除未引用代码
  5. 将大资源文件改为使用时下载
  6. 拆分组件库为多个har按需引用
  7. 启用压缩工具如har-packager

可通过修改build-profile.json配置优化构建参数。

针对HarmonyOS Next中HAR包体积过大的问题,以下是优化建议:

  1. 代码优化:
  • 检查是否包含未使用的第三方依赖库,移除不必要的import
  • 使用ProGuard或混淆工具压缩代码
  • 将大型组件按需拆分,实现按需加载
  1. 资源优化:
  • 压缩图片资源,使用WebP格式替代PNG
  • 移除未使用的资源文件
  • 检查是否包含调试信息(如source maps)
  1. 构建配置检查:
  • 确保开启minifyEnabled和shrinkResources
  • 检查build.gradle中是否包含不必要的打包配置
  • 考虑使用HAP的split特性按ABI或屏幕密度分包
  1. 模块化:
  • 将大型组件库拆分为多个HAR,按功能划分
  • 评估是否可以将部分逻辑移至运行时加载
  1. 其他:
  • 检查是否包含重复依赖
  • 使用tree-shaking工具分析依赖关系
  • 考虑使用动态特性模块

建议先使用分析工具(如APK Analyzer)确定具体是代码还是资源导致体积增大,再针对性优化。

回到顶部