HarmonyOS 鸿蒙Next中打包离线使用的包,需要集成大容量资源,如何实现

HarmonyOS 鸿蒙Next中打包离线使用的包,需要集成大容量资源,如何实现 开发离线使用的应用,里面需要集成大容量的图片资源大概10G,如果存放在resource中构建会报错(zip64),还有其他方式实现吗

7 回复

安装包上传限制的4GB,你这10G,完全没法提审啊。

建议是弄个静态资源服务器(OSS),用户使用时再去下载必要的资源。

图像

更多关于HarmonyOS 鸿蒙Next中打包离线使用的包,需要集成大容量资源,如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


将大容量图片资源直接放入resources/rawfile目录中,这个目录下的文件会以原始形式存储,不会参与编译压缩过程,避免触发ZIP64限制。

通过资源管理接口获取文件绝对路径:

import resourceManager from '@kit.ResourceManager'

let context = getContext(this)

let resource = await resourceManager.getRawFile('big_resources/image1.jpg')

let imagePath = resource.path

限制最大4G,你只能通过在app启动后进行联网加载了

超过4G了,只能选择联网下载资源包!

ERROR - hap-sign-tool: error: cd end offset not equals to eocd offset, maybe this is a zip64 file

Detail: Please check the message from tools.

在HarmonyOS Next中打包大容量离线资源,需使用resourceManager模块的rawfile目录。将资源文件放入resources/rawfile目录下,通过this.context.resourceManager.getRawFileContent()getRawFileDescriptor()异步获取资源。对于超大文件,建议分片压缩后按需解压使用。打包时注意在module.json5中配置正确的资源路径,HAP包大小上限为2GB。

针对HarmonyOS Next中集成大容量资源的问题,建议采用以下方案:

  1. 使用rawfile目录替代resource:
  • 在工程的resources/rawfile目录下存放大文件
  • 该目录下的文件不会被压缩打包,可避免zip64限制
  • 访问时通过ResourceManager的getRawFile方法获取
  1. 文件拆分方案:
  • 将10G资源按功能模块拆分为多个子包
  • 每个子包控制在2GB以下
  • 通过动态加载方式按需使用
  1. 外部存储方案:
  • 将资源文件放在应用的沙箱目录中
  • 首次启动时从服务器下载或从安装包释放
  • 通过文件路径直接访问
  1. 注意事项:
  • 确保在config.json中声明所需存储权限
  • 大文件加载建议使用流式读取
  • 考虑资源文件的版本管理和更新机制

这些方案可以有效规避zip64限制,同时保证资源的高效访问。

回到顶部