HarmonyOS鸿蒙Next中编译构建项目无法排除某些目录打包怎么处理

HarmonyOS鸿蒙Next中编译构建项目无法排除某些目录打包怎么处理

【问题现象】

当开启release编译构建,开启从入口文件开始编译,构建闭源HAR时,编译构建指定模块时无法排除该模块中的某些文件。项目结构示例如下,按照以下3项步骤,工程中的test模块中/src/main/ets/com/test/test.ts应该不会被打包进test.har包,但是实际test.ts文件仍然还是会被打包。

  1. 首先启用release编译构建;
  2. hvigor-config.json5中ohos.compile.lib.entryfile为true,开启从入口文件开始编译;
  3. 模块下的build-profile.json5中buildOptionSet.arkOptions.obfuscation.ruleOptions.enable为true,构建闭源HAR。

点击放大

【背景知识】

【解决方案】

当编译构建需要排除某些目录或文件时,需要配置ohpmignore文件,并且还要明确该目录或文件是否被引用。

1. 配置ohpmignore文件

若部分工程源文件无需构建到HAR包中,可在module目录下新建.ohpmignore文件,用于配置打包时要忽略的文件,将无需打包进HAR包的文件/文件夹名称写入.ohpmignore文件中。DevEco Studio构建时将过滤掉.ohpmignore文件中所包含的文件目录。

需注意:更改.ohpmignore配置后,需要清空相应模块的build文件夹,或点击DevEco Studio的Build -> clean project后再打包。

2. 编译构建

当开启release编译构建,开启从入口文件开始编译,构建闭源HAR时,发现test文件引用和未被引用两种情况下的打包情况:

  1. 如果test文件被其他地方引用了,test.har编译结果如下,发现包含test文件:

点击放大

点击放大

  1. 如果test文件没有被引用,test.har编译结果如下,此时不包含test文件:

点击放大

【总结】

当开启release编译构建,开启从入口文件开始编译,构建闭源HAR时,ohpmignore文件中配置的文件或目录如果被其他地方引用了,则会被打包,如果未被引用,则不会被打包。


更多关于HarmonyOS鸿蒙Next中编译构建项目无法排除某些目录打包怎么处理的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中编译构建项目无法排除某些目录打包怎么处理的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,编译构建项目时无法排除某些目录打包的问题

在HarmonyOS鸿蒙Next中,编译构建项目时无法排除某些目录打包的问题,可以通过修改项目的build-profile.json5文件来实现。在该文件中,找到buildOptions配置项,添加或修改exclude字段,指定需要排除的目录路径。例如:

{
  "buildOptions": {
    "exclude": [
      "path/to/exclude/dir1",
      "path/to/exclude/dir2"
    ]
  }
}

通过这种方式,可以在编译构建时排除指定的目录,避免它们被打包到最终的产物中。

回到顶部