You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ProGuard混淆会影响本地JSON数据吗?是否需配置-keep?

关于ProGuard配置与Gson序列化的问题解答

先明确ProGuard的核心行为

ProGuard会把代码里的类名、字段名、方法名这类“符号名”替换成毫无意义的短名称(比如test1变成a,test类变成b),核心目的是缩小安装包体积,同时防止反编译后代码被轻易读懂。

回到你的场景:不需要配置-keep,混淆对你的代码无影响

你的实体类字段test1/test2/test3/test4序列化后能输出a/b/c/d的JSON键,说明你肯定是通过**@SerializedName注解**或者自定义命名策略,把实体字段和固定JSON键做了绑定。这种情况下:

  • 即使ProGuard把test1混淆成x,Gson依然会根据你指定的"a"来生成JSON键,反序列化时也能正确对应回实体字段,完全不受混淆影响。
  • 你只需要本地存储JSON,既不需要实体类字段名保持原样,也不需要其他人看懂你的实体类结构,所以完全没必要加-keep来保留这些字段名。

补充:极端情况的说明

要是你没做任何映射配置,Gson默认会用实体字段名作为JSON键,那ProGuard混淆字段名后,JSON键会变成a/b/c这类混淆后的名称。但你的输出已经是固定的a/b/c/d,说明你肯定做了映射配置,所以这种情况不用考虑。

内容的提问来源于stack exchange,提问作者user13776577

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 01:10:03