项目中的模块,都在consumer-rules.txt中设置了混淆保留选项。但是只有一个模块的起作用了是为什么?项目中,在entry/obfuscation-rules.txt中开启了代码混淆。
-enable-property-obfuscation
-enable-toplevel-obfuscation
-enable-filename-obfuscation
-enable-export-obfuscation
然后在各个模块的consumer-rules.txt中也设置了混淆保留选项,例如:
launcher模块
-keep-file-name
Launcher
PrivacyDialogPage
PrivacyInfo
-keep
src/main/ets/components/model/data/**
web模块
-keep-file-name
WebViewPage
PdfPage
CityPaymentPage
-keep
src/main/ets/components/model/data/**
但是混淆后,通过entry/build/default/cache/default/default@CompileArkTS/esmodule/release中查看,部分模块的保留选项起作用了,部分模块需要保留的代码仍然被混淆了。launcher模块中的文件名和json对象都被保留了,但是web模块中的文件名和json对象仍然被混淆了,请问这个是为什么?
obfuscation-rules.txt是用于当前模块的混淆配置consumer-rules.txt是用于引入模块的混淆配置(被引入模块本身不会受这个配置影响),相当于引入了这个模块,就会获得consumer-rules.txt文件里的混淆配置。
另外,需要release方式打包,编译类型要选择release,在右上编译模块左边有一个形式方向盘的图标,点击后设置Build Mode为Relaease。
资料文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5