HarmonyOS 鸿蒙Next 不涉及网络请求的实体类为什么也需要加入混淆白名单?

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

HarmonyOS 鸿蒙Next 不涉及网络请求的实体类为什么也需要加入混淆白名单? 我在读取json文件的ets中定义了一个接收数据结构的class类,未涉及网络请求,为何在release模式下也需要加入混淆白名单才行,否则就无法识别?

例如:
ParamTableEntity.ets中获取json文件中的Table类型数据,其中内部数据类型Title是定义在ets中,接收表格中的标题信息,在release模式下,只有将Title也加入混淆白名单功能才会正常。为什么?

2 回复

你的Title定义在ets文件中,混淆开启之后,会混淆Title里边的属性名称,会导致读取的json数据无法映射成Title对象,所以才会导致开启混淆之后无法识别,可以根据这个文档去查看混淆结果:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/source-obfuscation-V13#

如何查看混淆效果,也可以根据这个链接去修改您的混淆规则:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/source-obfuscation-V5#

配置混淆规则

更多关于HarmonyOS 鸿蒙Next 不涉及网络请求的实体类为什么也需要加入混淆白名单?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)开发中,即使实体类不涉及网络请求,也可能需要加入混淆白名单,主要原因如下:

  1. 反射机制使用:鸿蒙系统中,某些框架或库可能通过反射机制来实例化或访问实体类的成员。如果实体类被混淆,其类名、成员名等可能发生变化,导致反射失败。因此,为确保反射机制正常工作,需要将这类实体类加入混淆白名单。

  2. 序列化与反序列化:鸿蒙应用中,实体类常用于数据持久化或跨进程通信。在这些场景中,实体类会被序列化为字节流,并在需要时反序列化回对象。混淆会改变类名和成员名,导致序列化数据无法正确反序列化。因此,涉及序列化的实体类需要加入白名单。

  3. 第三方库依赖:鸿蒙应用可能依赖第三方库,这些库内部可能使用特定命名规则的类和方法。混淆可能破坏这些命名规则,导致第三方库无法正常工作。因此,依赖第三方库的实体类也可能需要加入白名单。

综上所述,不涉及网络请求的实体类在鸿蒙开发中,如果涉及反射、序列化或第三方库依赖等情况,同样需要加入混淆白名单以确保应用正常运行。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部