HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小
HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小
自己写的组件库构建出har,体积较大,有300多k,都有什么原因能造成体积很大呢。怎么优化以减小这个体积呢。
更多关于HarmonyOS鸿蒙Next中自己写的组件库构建出har,体积较大,怎么减小的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【背景知识】
减小应用包大小是提升应用下载和安装体验的重要方式。通过压缩、精简或者复用应用中的代码或资源,可以有效降低应用包体积大小,减少空间占用,从而达到提升应用下载和安装速度的目的。在了解如何优化包大小之前,需要先了解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组件库体积的方法:
- 使用ProGuard进行代码混淆和优化
- 移除未使用的资源文件(图片/字体等)
- 检查依赖关系,删除不必要的依赖库
- 使用OHPM的tree-shaking功能自动移除未引用代码
- 将大资源文件改为使用时下载
- 拆分组件库为多个har按需引用
- 启用压缩工具如har-packager
可通过修改build-profile.json配置优化构建参数。
针对HarmonyOS Next中HAR包体积过大的问题,以下是优化建议:
- 代码优化:
- 检查是否包含未使用的第三方依赖库,移除不必要的import
- 使用ProGuard或混淆工具压缩代码
- 将大型组件按需拆分,实现按需加载
- 资源优化:
- 压缩图片资源,使用WebP格式替代PNG
- 移除未使用的资源文件
- 检查是否包含调试信息(如source maps)
- 构建配置检查:
- 确保开启minifyEnabled和shrinkResources
- 检查build.gradle中是否包含不必要的打包配置
- 考虑使用HAP的split特性按ABI或屏幕密度分包
- 模块化:
- 将大型组件库拆分为多个HAR,按功能划分
- 评估是否可以将部分逻辑移至运行时加载
- 其他:
- 检查是否包含重复依赖
- 使用tree-shaking工具分析依赖关系
- 考虑使用动态特性模块
建议先使用分析工具(如APK Analyzer)确定具体是代码还是资源导致体积增大,再针对性优化。