在HarmonyOS开发中,对于har包混淆问题,如果`-keep`保留指定文件不生效,可能的原因和解决方案如下:
### 可能的原因
1. **路径配置错误**:
- 确保`-keep`后面指定的路径是相对于混淆配置文件的正确路径。
- 路径应该精确到文件,包括文件的扩展名。
2. **混淆规则冲突**:
- 其他混淆规则可能与`-keep`规则冲突,导致指定的文件或类被覆盖。
- 检查是否有其他全局性的混淆规则(如通配符规则)可能影响到指定的文件。
3. **混淆工具版本或配置问题**:
- 确保使用的混淆工具版本与HarmonyOS开发环境兼容。
- 检查混淆工具的配置文件是否完整且正确。
4. **代码结构或编译问题**:
- 确保被混淆的代码结构没有问题,且能够正常编译。
- 检查编译过程中的日志,看是否有相关警告或错误信息。
### 解决方案
1. **核对路径**:
- 重新核对`-keep`规则中指定的路径,确保它们正确无误。
- 如果路径中包含特殊字符或空格,请确保它们被正确处理。
2. **调整混淆规则**:
- 检查并调整其他混淆规则,确保它们不会与`-keep`规则冲突。
- 可以尝试暂时禁用其他混淆规则,以验证`-keep`规则是否有效。
3. **更新或修复混淆工具**:
- 如果怀疑是混淆工具的问题,尝试更新到最新版本或修复当前版本。
- 查阅混淆工具的官方文档,了解是否有相关的已知问题或修复方案。
4. **检查代码和编译**:
- 确保代码结构清晰,没有未解决的编译错误或警告。
- 清理并重新编译项目,以确保所有更改都已生效。
### 示例修正后的混淆规则
// 开启属性混淆
-enable-property-obfuscation
// 混淆字符串字面量属性名
-enable-string-property-obfuscation
// 开启顶层作用域名称混淆
-enable-toplevel-obfuscation
-enable-filename-obfuscation
-enable-export-obfuscation
// 去除不必要的空格符和所有的换行符。如果使用这个选项,那么所有代码会被压缩到一行
-compact
// 删除log
-remove-log
// Keep options:
-keep-property-name EsscSDK. Biap.
-keep class ./src/main/ets/EsscSDK.ets
-keep class ./src/main/ets/Biap.ets
**注意**:在`-keep`规则中,通常使用`-keep class`来指定要保留的类,而不是直接指定文件路径。确保你的混淆规则中使用了正确的语法和格式。同时,`-keep-property-name`规则后面应该跟具体的属性名或类名模式,而不是直接跟类名(除非你是想保留这些类中的特定属性名)。
保留的文件/文件夹名称(无需文件后缀)-keep-file-nameentryabilityEntryAbilitypagesIndex
当前需要按照这个格式配置下混淆的keep。
代码混淆-保留选项,可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...保留选项
-keep-file-nameEsscSDKBiap
-keep保留指定路径中的所有名称(例如变量名、类名、属性名等)不被混淆。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。