HarmonyOS鸿蒙Next中项目如果开发完成,打包,怎么在离线环境打包呢

HarmonyOS鸿蒙Next中项目如果开发完成,打包,怎么在离线环境打包,打包步骤是怎样的呢?

5 回复

在有网络的电脑上提前在AGC申请签名需要的证书,下载到本地,拷贝到离线环境,使用手动签名,打包。打包步骤:1.选择build mode 为release模式(build mode 选项在新版UI右侧 select product中),2.单击Build > Build Hap(s)/APP(s) > Build APP(s),等待编译构建完成已签名的应用包。3.编译构建完成后,可以在工程目录build > outputs > default下,获取带签名的应用包。

准备打包所需配置文件:https://developer.huawei.com/consumer/cn/doc/app/agc-help-internal-test-prepare-0000002262046566 。编译打包应用:https://developer.huawei.com/consumer/cn/doc/app/agc-help-internal-test-build-app-0000002295372093

更多关于HarmonyOS鸿蒙Next中项目如果开发完成,打包,怎么在离线环境打包呢的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  1. 准备工作:确保环境基础(在有网环境中完成)

前提条件:

离线环境的PC必须安装Node.js(v14+)、HarmonyOS SDK、DevEco Studio基础工具。如果缺少,需在有网环境提前安装。

离线环境的PC安装Verdaccio或其他本地npm服务器工具(如通过npm install -g verdaccio命令),用于模拟npm仓库1。

项目依赖的npm包需提前离线缓存:在有网环境,使用npm-pack-all工具将所有依赖打包成.tgz文件(例如:npm pack生成.tgz),然后将文件拷贝到离线环境,通过npm install XXXX.tgz安装。

关键操作:

在有网环境下,使用DevEco Studio构建项目(选择"Build > Build APP(s)"),确保编译成功并生成缓存文件(位于C:\Users<username>.hvigor目录)。

  1. 迁移项目文件到离线环境2

步骤概述:

将有网环境构建后的整个项目文件夹(包含源代码、node_modules、build输出目录等)打包压缩,复制到离线环境PC。

迁移hvigor缓存:

拷贝有网环境的C:\Users<username>.hvigor\wrapper\tools目录所有内容到离线环境对应路径。

迁移有网环境的C:\Users<username>.hvigor\caches\v3和C:\Users<username>\AppData\Local\pnpm-cache\metadata文件到离线环境相同位置。

处理workspace文件:

在离线环境首次打开项目(使用DevEco Studio),会生成一个哈希值命名的文件夹(位于C:\Users<username>.hvigor\project_caches)。

将有网环境的C:\Users<username>.hvigor\project_cache<hash>\workspace文件替换到离线环境的对应位置,并删除workspace中的node_modules文件夹(避免符号链接失效问题)。

注意事项:

符号链接问题:直接拷贝workspace可能导致ERR_PNPM_NO_OFFLINE_META错误,需替换文件而非复制文件夹。

路径一致性:确保离线环境的目录结构与有网环境一致(如用户名为相同英文名)。

  1. 配置离线环境

关键配置:

修改npm设置:在离线环境的项目根目录或全局.npmrc文件中,添加或更新以下内容:

registry=http://localhost:4873 # 指向本地Verdaccio服务器

store-dir=C:\Users\<username>\.hvigor\caches # 确保路径一致

offline=true

运行命令npm config set offline true激活离线模式。

启动本地npm服务器:在离线环境运行verdaccio,确保服务启动(默认端口4873)。

验证依赖:进入项目目录,执行npm install或pnpm install检查依赖是否正常加载(无网络请求)。

  1. 执行打包操作

使用DevEco Studio(推荐):

打开项目后,选择菜单"Build > Build APP(s)",DevEco Studio会自动调用离线缓存进行编译和打包。输出路径通常在build/default/outputs下(如HAP文件)。

使用命令行打包工具(适用于自动化流水线):

打包工具JAR包位于HarmonyOS SDK的toolchains目录(例如app_packing_tool.jar)。

打包命令示例(生成HAP包):

java -jar app_packing_tool.jar --mode hap --resources-path <资源路径> --out-path <输出路径> --profile <module.json路径>

参数说明:<资源路径>来自编译产物(查找方式:在hvigor/hvigor-config.json5中设置"logging": { “level”: “debug” },然后构建项目,在日志中搜索app_packing_tool.jar路径)。

关键约束:打包需Java 8+环境,参数和值必须成对出现(如–resources-path <path>,搜索3表1对照module.json属性)。

定制打包需求(可选):

如果需要修改输出文件名或路径(如添加版本号),可使用hvigor插件。例如,在hvigorfile.ts中注册任务:

// 示例:定制HAR包文件名和路径
pluginContext.registerTask({
  name: 'renameHarTask',
  run: (taskContext) => {
    // 从oh-package.json5读取版本和作者
    const version = ...; // 解析逻辑
    const targetFile = path.join(targetPath, `${taskContext.moduleName}-${version}.har`);
    // 移动文件并重命名
  },
  dependencies: ['default@PackageHar']
});

常见问题与建议

错误处理:

构建失败:检查.hvigor/caches目录权限,确保离线环境所有路径与有网环境一致(搜索2的ERR_PNPM_NO_OFFLINE_META错误源于路径不匹配)。

打包工具报错:验证module.json属性(如bundleName、versionCode)是否配置正确(参考搜索3表1)。

性能优化:

定期清理无用缓存(如node_modules),避免离线环境磁盘空间不足。

在迁移前,使用hvigor clean命令清理临时文件,减少包大小。

适用场景:此方法适用于Stage模型应用、HAP/HSP包生成,且需要HarmonyOS 5.0.0+环境。

构建-编译app文件

在HarmonyOS Next中,离线打包需使用DevEco Studio。首先,在联网环境下下载所需SDK、工具链和依赖包。然后,在DevEco Studio设置中配置本地SDK路径,指向已下载的离线资源。打包时,选择Build > Build HAP(s)或Build APP(s),系统将直接使用本地资源进行编译构建,生成HAP或APP文件。

在HarmonyOS Next中,离线环境打包主要依赖于本地已下载和配置好的构建工具与依赖。以下是核心步骤:

  1. 环境准备:确保开发机已安装DevEco Studio,并在联网时提前下载好对应API版本的SDK、构建工具(如Ohos CLI、Hvigor)及项目所需npm依赖包。离线环境无法自动下载这些资源。

  2. 依赖缓存:在联网状态下,通过npm install或项目自动构建,将依赖包安装到本地node_modules目录。可整体备份该目录及oh_modules(若存在),以便离线恢复。

  3. 打包命令:在项目根目录打开终端,直接执行构建命令。根据项目类型选择:

    • 应用:使用ohos-packagehvigorw assembleHap(Hvigor项目)进行编译打包,生成HAP文件。
    • 静态共享包(HSP):使用hvigorw assembleHsp
  4. 签名配置:提前在DevEco Studio中配置好签名证书(.p12/.cer文件及密码),离线时自动使用本地配置签名。

关键点:离线打包的核心是预先在联网环境下完成所有工具链和依赖的本地化部署。打包流程本身与联网环境一致,但无法在线验证证书或获取新依赖。

回到顶部