此文档适用于 uni-app 4.31(待发布)及之后的版本,4.31之前的版本请参考:鸿蒙离线集成

# 集成编译产物到项目内

如下文档使用/resource指代鸿蒙资源输出目录

  1. 将 uni_modules 入口文件移动到/entry/src/main/ets/uni_modules/index.generated.ets, 如果目录不存在则需要手动创建

移动/resource/uni_modules/index.generated.ets文件到鸿蒙项目/entry/src/main/ets/uni_modules/index.generated.ets

  1. 将 uts api 对应的 uni_modules 文件部署到鸿蒙工程内

移动/resource/uni_modules目录下的 uts api 模块目录到鸿蒙项目/uni_modules目录

编译到鸿蒙时每个 uts api 的 uni_module 都会创建一个鸿蒙的静态库。对于静态库有两个概念需要区分一下。

  • 静态库的 module 名称(如下称为 moduleName),每个静态库的名称,只允许大小写字母加下划线组成
  • 静态库的包名(如下称为 packageName),静态库被 import 时的名称,类似 npm 包名。不允许使用大写字母

对于一个名称为 uni-getBatteryInfo 的 uni_module,它的 moduleName 为uni_modules__uni_getbatteryinfo,packageName 为@uni_modules/uni-getbatteryinfo

packageName 规则较为简单,给 uni_module 名称前加上@uni_modules前缀然后转为全小写。

moduleName 是在 packageName 的基础上生成的,移除@符号,将/替换为两个下划线,将-替换为一个下划线

  1. 修改鸿蒙项目oh-package.json5

为所有本地 uts api 的 uni_module 及其他三方依赖注册 packageName。uni-app 编译器会自动在/resource/uni_modules目录下生成oh-package.json5文件,该文件包含了所有依赖的信息,可以直接将此文件合并到鸿蒙项目的oh-package.json5文件内。

以 uni-getBatteryInfo 为例,在oh-package.json5文件内dependencies字段下添加如下内容

"@uni_modules/uni-getbatteryinfo": "./uni_modules/uni-getbatteryinfo"
  1. 修改鸿蒙项目build-profile.json5

为所有本地 uts api 的 uni_module 注册 moduleName。uni-app 编译器会自动在/resource/uni_modules目录下生成build-profile.json5文件,该文件包含了所有模块的信息,可以直接将此文件合并到鸿蒙项目的build-profile.json5文件内。

以 uni-getBatteryInfo 为例,在build-profile.json5文件内modules数组内添加如下内容

{
  "name": "uni_modules__uni_getbatteryinfo",
  "srcPath": "./uni_modules/uni-getBatteryInfo"
}
  1. 将小程序打包出的资源(cli 项目使用 npm run build:app-harmony 生成)拷贝到/entry/src/main/resources/resfile/apps/HBuilder目录(注意是 resfile 不是 rawfile,如果没有此目录需手动创建)。