HarmonyOS 鸿蒙Next:我开启了代码混淆功能,并且在编译时以Release模式构建HAR包,但构建后在demo中无法引入HAR包。是否开启混淆后,要调的类保留失效了?

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:我开启了代码混淆功能,并且在编译时以Release模式构建HAR包,但构建后在demo中无法引入HAR包。是否开启混淆后,要调的类保留失效了?

请问下我这个collect模块是开发第三方SDK,build-profile.json5文件中,将ruleOptions.enable字段的值设置为true,我开启了代码混淆功能,并且在编译的时候,以Release模式构建HAR包的。

以下是我在obfuscation-rules.txt文件中保留了以下类

-keep

./src/main/ets/common/ApmAgent.ets

./src/main/ets/utils/CrashUtil.ets

但我构建HAR包后在自己写的demo中无法引入这个har包。。。是不是我开启混淆后,那两个要调的类保留失效了?


更多关于HarmonyOS 鸿蒙Next:我开启了代码混淆功能,并且在编译时以Release模式构建HAR包,但构建后在demo中无法引入HAR包。是否开启混淆后,要调的类保留失效了?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

代码混淆参考

楼主,保留的类是否在collect/index.ets中导出过?如果还是不行可以提供建议demo分析下

更多关于HarmonyOS 鸿蒙Next:我开启了代码混淆功能,并且在编译时以Release模式构建HAR包,但构建后在demo中无法引入HAR包。是否开启混淆后,要调的类保留失效了?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


  • 保留的两个类在 collect/index.ets 中导出过的,

对照官方文档自查下呢,collect中的build-profile.json5和har包中index.d.ets截图看看,

在HarmonyOS鸿蒙Next系统中,开启代码混淆功能并在Release模式下构建HAR包时,确实可能会导致某些类因为混淆而未被正确保留,从而在demo中无法引入HAR包。代码混淆是通过改变类、方法和字段的名称来减少代码的可读性,从而增加逆向工程的难度。然而,这种改变也可能导致运行时或编译时的错误,特别是当其他模块依赖于这些被混淆的名称时。

在HarmonyOS中,若要使用混淆后的HAR包,你需要确保在混淆配置文件中正确保留了所有需要暴露给外部的类、方法和字段。这通常通过添加特定的规则到混淆配置文件(如proguard-rules.pro)来实现。

检查以下几点可能有助于解决问题:

  1. 确认混淆配置文件是否正确设置了keep规则,以保留所有需要的公共API。
  2. 检查HAR包的构建日志,看是否有关于混淆的警告或错误。
  3. 在demo项目中,尝试清理并重新构建项目,以确保所有依赖都是最新的。

如果以上步骤未能解决问题,可能是混淆配置存在其他未注意到的错误。此时,可以仔细检查混淆配置文件,或者考虑暂时关闭混淆功能以进行调试。如果问题依旧没法解决请联系官网客服,官网地址是

回到顶部