HarmonyOS 鸿蒙Next在hsp中开启混淆的规则
HarmonyOS 鸿蒙Next在hsp中开启混淆的规则
在hsp中,开启了混淆,混淆规则如下 -enable-property-obfuscation -enable-toplevel-obfuscation -enable-filename-obfuscation -enable-export-obfuscation -remove-log 打包后发现,build/outputs/hspA.har中,index.d.ets导出的类已经被混淆,内容如下 混淆前: export { AppEnvConstant } from “./src/main/ets/utils/AppEnvConstant” 混淆后: export { q1 } from “./src/main/ets/a/j”; 但是在entry中引用hspA内容时,引用的类名却还是使用 AppEnvConstant import { AppEnvConstant } from “@normalized:N&commonutils&&commonutils/Index&”; 运行时报错 Error message:the requested module ‘@normalized:N&commonutils&&commonutils/Index&’ does not provide an export name ‘AppEnvConstant’ which imported by ‘&entry/src/main/ets/abilitystage/EntryAbilityStage&’ 疑问: 在混淆时,hspA依赖库中,类已经被改名为q1。但是entry中使用import引用时却没有改名,依旧使用混淆前的类名,这样合理吗?如何一并修改。
HSP 和主模块是独立编译的,混淆后名称会不一致,因此都需要配置白名单。可以给 export { AppEnvConstant }
类配置白名单,详情可参考:OpenHarmony 文档。
配置选项
1. keep-file-name [,identifiers,...]
指定要保留的文件/文件夹的名称(不需要写文件后缀),支持使用名称类通配符。例如:
-keep-file-name
index
entry
-keep
./src/main/ets/fileName.ts // fileName.ts中的名称不混淆
../folder // folder目录下文件及子文件夹中的名称都不混淆
具体参考保留选项:华为开发者文档。
2. -keep filepath
保留指定相对路径中的所有名称(例如变量名、类名、属性名等)不被混淆。这个路径可以是文件与文件夹,若是文件夹,则文件夹下的文件及子文件夹中的文件都不混淆。
- 路径仅支持相对路径,
./
与../
为相对于混淆配置文件所在目录,支持使用路径类通配符。
示例:
-keep
./src/main/ets/fileName.ts // fileName.ts中的名称不混淆
../folder // folder目录下文件及子文件夹中的名称都不混淆
../oh_modules/json5 // 引用的三方库 json5 里所有文件中的名称都不混淆
注意事项
- 被
-keep filepath
所保留的文件,其依赖链路上的文件中导出名称及其属性都会被保留。 - 该功能不影响文件名混淆
-enable-filename-obfuscation
的功能。 - 如果需要保留特定属性名,则只能通过特定属性名来进行保留。
HarmonyOS 鸿蒙Next在hsp中开启混淆的规则如下:
- 确认环境:确保你的DevEco Studio版本支持代码混淆,且你的工程是基于Stage模型,编译模式设置为release。
- 配置文件:在hsp模块的
build-profile.json5
文件中,找到arkOptions
下的obfuscation
配置,确保enable
字段为true
。同时,配置好files
字段指向的混淆规则文件,如obfuscation-rules.txt
。 - 添加混淆规则:在
obfuscation-rules.txt
文件中,根据需要添加混淆选项,如-enable-property-obfuscation
(开启属性混淆)等。 - 编译:在DevEco Studio中选择目标模块,点击
Build -> Make Module
选项开始编译。编译过程中,代码混淆将按照你配置的规则进行。
请注意,混淆后的代码名称会发生更改,可能会影响运行时crash堆栈日志的理解。如果配置后混淆未生效,请检查是否满足所有条件,如编译模式是否为release等。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html