HarmonyOS鸿蒙Next electron 35 PC应用适配将原来的项目拷贝到App目录下报错

HarmonyOS鸿蒙Next electron 35 PC应用适配将原来的项目拷贝到App目录下报错 现在我们在Windows和mac上基于electron 35(一套代码)开发了对应的exe和dmg。

现在想在鸿蒙pc上也上架这个应用,如何把现有的项目移植到鸿蒙pc上。

目前是根据electron框架社区文档的这个来进行适配的

https://developer.huawei.com/consumer/cn/forum/topic/0208193679245286229?fid=0109140870620153026

文档里是让拷过去的。但是现在的问题是一个复杂项目,拷过去了怎么编译运行起来,要处理哪些问题

把整个工程拷贝到鸿蒙electron项目下的web_engine/src/main/resources/resfile/resources/app下,目前在deveco-studio5.1.1编译报错如下:

ERROR: 11017001 Read zip file failed

Error Message: cd end offset not equals to eocd offset, maybe this is a zip64 file

  • Try the following:

    App (or hap/hsp/hnp) use zip format. Zip file can support a maximum size of 4G and 65535 sub files. If this value is exceeded, it will be automatically converted to zip64. Please check if file is zip64 format, or zip formatted correctly. Detail: Please check the message from tools. hvigor ERROR: BUILD FAILED in 55 s 166 ms


更多关于HarmonyOS鸿蒙Next electron 35 PC应用适配将原来的项目拷贝到App目录下报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

这边报错原因提示HAP包文件大小超过4G或HAP包内条目数(包括文件和目录)超过65535,超出了zip格式上限,打包成了zip64格式,参考如下文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs/faqs-signature-service-15

这边按照以下方式看下是否可以:

  1. 分析依赖,对不满足的依赖进行适配和替换。
  2. 业务代码适配HarmonyOS,对差异点如权限判断,平台判断,沙箱路径等进行修改。
  3. TypeScript开发可选:编译TypeScript为JavaScript。
  4. 将编译产物及package.json复制到HarmonyOS化Electron样例工程中,并删除package.jsondevDependencies字段。
  5. 在HarmonyOS的Electron工程中安装依赖,并启动工程,查看依赖是否正常。若不正常,则回退到第1步进行依赖适配。

最佳实践:

  • 原始Electron工程和HarmonyOS Electron工程互不包含,分别使用VSCode/WebStorm和DevEco Studio打开两个工程。
  • Electron工程编译并使用electron-builder打包,其中package.jsonbuild字段设置asar: false,拷贝asar拆包后的app文件产物到HarmonyOS Electron工程目
  • 替换node_modules中C/C++ Native模块为使用HarmonyOS编译工具链编译产物,并将相关.node/.so放置在libs/arm64-v8a目录下,并修改引入路径。

更多关于HarmonyOS鸿蒙Next electron 35 PC应用适配将原来的项目拷贝到App目录下报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next不支持Electron框架。Electron基于Chromium和Node.js,与鸿蒙的ArkTS/ArkUI架构不兼容。无法直接拷贝Electron项目到App目录下运行。需使用鸿蒙原生开发方式,基于ArkTS和ArkUI重构应用。

这个报错的核心问题是资源文件体积或数量超限,导致构建工具无法正确处理。

根据错误信息,你的应用资源(resources/app目录下的内容)在打包时被识别为zip64格式,而当前构建工具不支持。这通常由以下原因导致:

  1. 资源文件总体积超过4GB
  2. 资源文件数量超过65535个

直接解决方案:

  1. 精简 resources/app 目录

    • 删除 node_modules 目录(Electron应用通常依赖大量npm包,这是主要体积来源)。
    • 仅保留应用运行必需的代码、资源及最小化的依赖。在鸿蒙项目中,依赖应通过鸿蒙的包管理机制重新配置。
    • 检查并移除调试文件、源码映射(source map)、文档、测试用例等非运行时文件。
  2. 检查资源文件数量

    • 如果文件数量过多(尤其是大量小文件),考虑将静态资源(如图片、字体)进行合并或使用更高效的存储格式。
  3. 重新组织项目结构

    • 鸿蒙Next的Electron适配方案并非简单拷贝。你需要将原有Electron项目中的前端代码部分(HTML、CSS、JavaScript、业务资源)放置在 resources/app 目录下。
    • Node.js后端逻辑、原生模块、Electron主进程代码 需要根据鸿蒙的API和能力进行重写或适配,不能直接拷贝。这些应放在鸿蒙项目的相应模块中,通过ArkTS/JavaScript调用。
  4. 构建配置检查

    • 确保 build-profile.json5 等配置文件中的相关设置正确,特别是关于资源处理的配置。

关键步骤总结: 将原有Electron项目视为一个“前端源码”,仅移植其渲染进程相关代码和资源至 resources/app。你需要为鸿蒙平台重新实现或适配主进程逻辑、系统交互及Electron特定API(使用鸿蒙提供的对应能力)。直接全量拷贝复杂项目必然导致兼容性和构建问题。

回到顶部