HarmonyOS 打包超过2MB?

打包报错:

hvigor ERROR: Failed ::PackageApp…
hvigor ERROR: Tools execution failed.
2024/08/26 12:03:01.386 - Ohos BundleTool [Error]: module phone and it’s dependencies size is 5.24MB, which is overlarge than 2MB.
2024/08/26 12:03:01.386 - Ohos BundleTool [Error]: checkAtomicServiceModuleSize failed on device phone.
2024/08/26 12:03:01.386 - Ohos BundleTool [Error]: checkFileSize failed.
2024/08/26 12:03:01.386 - Ohos BundleTool [Error]: Compressor::compressProcess check atomic service size fail.
2024/08/26 12:03:01.386 - Ohos BundleTool [Error]: Compressor::compressProcess compress failed.
2024/08/26 12:03:01.387 - Ohos BundleTool [Error]: CompressEntrance::main exit, compress failed
Detail: Please check the message from tools.
hvigor ERROR: BUILD FAILED in 1 s 754 ms

目录结构如图所示:

阅读 752
1 个回答

解决方案

元服务中,所有包的大小总和不能超过10M,单个包加上其采用dependency方式依赖的分包,大小不能超过2M。https://developer.huawei.com/consumer/cn/doc/atomic-guides-V5/atomic-subcontract-V5

可以把.app .hap 都可以改成.zip 可以直接看里面都包含了什么,看到底是哪个文件大了,当前分包,如果是dependencies方式使用,实际是会按分包+dependencies计算分包大小。

解决思路:

1、将公共代码抽成common模块,entry的hap包、特性hspXXX包依赖common。

2、使用router路由到hspXXX的页面(entry的dependency不再依赖hspXXX),比如

router.back({
  // 路径为:`library/src/main/ets/pages/Menu.ets
  url: '@bundle:com.samples.hspsample/library/ets/pages/Menu'
})

可以尝试优化一下user模块,试试将user模块再拆分成两个小的模块,尽量只使用高阶api,做少量代码开发

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进