HarmonyOS鸿蒙Next项目开启默认混淆后会导致属性名被混淆,和文档描述不符,导致预期外的运行错误

HarmonyOS鸿蒙Next项目开启默认混淆后会导致属性名被混淆,和文档描述不符,导致预期外的运行错误 鸿蒙项目开启默认混淆后会导致属性名被混淆,和文档描述不符,导致预期外的运行错误

3 回复

从DevEco Studio 5.0.3.600开始,新建工程默认关闭代码混淆功能,如果在模块配置文件build-profile.json5开启代码混淆,混淆规则配置文件obfuscation-rules.txt中默认开启-enable-property-obfuscation、-enable-toplevel-obfuscation、-enable-filename-obfuscation、-enable-export-obfuscation四项推荐选项,可进一步在obfuscation-rules.txt文件中更改配置。

其中-enable-property-obfuscation

开启属性混淆。 如果使用这个选项,那么所有的属性名都会被混淆

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#代码混淆简介

一个工程中经常会有许多混淆规则文件,这些文件来自于:

主工程的ruleOptions.files (这里主工程指的是正在构建的工程)

本地依赖的library中的consumerFiles选项中指定的文件

远程依赖的HAR包中的obfuscation.txt文件

当构建主工程的时候,这些文件中的混淆规则会按照下面的合并策略(伪代码)进行合并

您检查一下是否有上述情况导致开启了属性混淆

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#混淆规则合并策略

更多关于HarmonyOS鸿蒙Next项目开启默认混淆后会导致属性名被混淆,和文档描述不符,导致预期外的运行错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next项目中,开启默认混淆后,属性名被混淆的情况可能与混淆配置文件(如proguard-rules.pro)的设置有关。默认情况下,混淆工具会压缩、优化和混淆代码,包括类名、方法名和属性名,以增加应用的安全性。如果属性名被意外混淆,可能导致反射、序列化等依赖属性名的功能出现预期外的运行错误。

为确保属性名不被混淆,通常需要在混淆配置文件中添加相应规则。例如,使用-keepclassmembers-keepattributes指令来保留特定属性名。例如:

-keepclassmembers class com.example.MyClass {
    public <fields>;
}

此外,HarmonyOS的文档中可能未明确说明默认混淆行为对属性名的影响,或混淆配置未正确应用。开发者需检查混淆配置文件,确保规则与项目需求一致,并验证混淆后的代码行为是否符合预期。若问题持续,建议检查混淆工具版本及HarmonyOS SDK的兼容性。

在HarmonyOS鸿蒙Next项目中,开启默认混淆后,属性名被混淆可能导致与文档描述不符,进而引发运行错误。建议检查混淆配置文件(proguard-rules.pro),确保关键属性不被混淆。可以通过添加-keep规则来保护特定类或属性。例如:

-keep class com.example.MyClass {
    public <fields>;
}

此外,确保混淆配置与项目依赖库的规则兼容,避免遗漏重要类或方法。测试时,建议使用-dontobfuscate选项先进行调试,确认问题后再逐步优化混淆规则。

回到顶部