当前位置: 首页 > 知识库问答 >
问题:

在使用ProGuard时,有可能混淆GSON注释中的字符串吗?

乜承嗣
2023-03-14

我正在尝试用ProGuard缩小、优化和模糊我的应用程序。除了GSON注释之外,所有东西都运行良好。我的应用程序中有这样的内容:

@Expose
@SerializedName("testbla")
private String test;

当我使用ProGuard时,它会变成这样:

@com.google.a.a.a
@c(a="testbla")
private String a;

所以有某种混淆,但“testbla”仍然是可读的。我在文档中读到,ProGuard不会混淆字符串常量(例如https://www.guardsquare.com/en/ProGuard/faq#encrypt)。然而,如果有任何选择,我想混淆那些字符串。那么有没有可能,请让我知道!

谢谢你的帮助!

共有1个答案

楚志强
2023-03-14

ProGuard不会混淆字符串。

Gson注释确保映射类正常工作是很重要的。

如果删除注释并使用proguard,当应用程序需要将JSON转换为POJO时,就会出现错误。因为代码会尝试找到属性“a”,而不是“test”(因为您的代码混淆了)。正因为如此,Gson注释很重要。

还有其他的选项可以混淆代码,比如DexGuard,但它不是免费的。

查看差异:链接

 类似资料:
  • 在序列化/反序列化过程中,我的项目在中实现了一个,用于保留对象的多态性状态。不管怎样,该项目在开发测试中工作得很好,但当它用proguard混淆发布并测试时,它就崩溃了。 我的Gson特定的proguard配置是: 我正在使用的打字适配器是: 任何来自开发者社区的帮助都将不胜感激。

  • 问题内容: 我在AndroidStudio 1.2.1.1和Gradle 1.2.3中使用了ProGuard。 My Gradle的发布版本的配置如下: 我希望混淆类的私有字段。 到目前为止,这是我的proguard配置文件(经过多次尝试): 但是在从AndroidGuard 反编译后,我最终得到了: 我知道这种混淆的使用是有限的,但是我想由ProGuard重命名。怎么做? 这是refcard。

  • 我对混淆有问题。为了获得更好的想象力: JAVA代码 本机代码 在我想发布一个混淆版本之前,一切都很好。这个类中的Java类(例如)和方法的名称被proGuard重命名为“a”和“a()”(这可能并不总是相同的),但在本机代码中,方法和类的原始名称保持不变,因为它被硬编码为字符串,如下所示: ...有没有办法动态设置方法名?

  • 我正在努力解决JavaFX应用程序的模糊问题。以本项目为基础: Proguard配置文件:-dontoptimized-dontshrink 有人有JavaFX模糊处理的经验吗?

  • 我当时在做一个计算机科学测试,并尝试了这个问题。 据我所知,我认为打印输出是假的,因为据我所知,字符串只能与。等于()。但我弄错了。它说答案是假的,是真的。有人能解释一下原因吗?

  • 问题内容: 是否可以仅将ProGuard用于混淆。我不希望ProGuard从我的项目中删除任何类。我打算使用ProGuard只是为了混淆,以防止进行反向工程。 问题答案: 是的,通过指定 您可以在ProGuard手册中找到有关所有配置选项的详细信息。 请注意,缩小和优化可能有助于防止反向工程。