【问题标题】:Is it possible to obfuscate Strings in GSON Annotations while using ProGuard?使用 ProGuard 时是否可以混淆 GSON 注释中的字符串?
【发布时间】:2017-10-24 22:48:39
【问题描述】:

我正在尝试使用 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)。不过,如果有任何选择,我想混淆这些字符串。那么有没有可能,请告诉我!

感谢您的帮助!

【问题讨论】:

  • 我想这没有意义。那么 Gson 怎么知道如何映射 JSON 属性和你的 POJO 字段呢? ProGuard 做得对。如果你真的想要混淆它们,你必须重新实现你自己的ReflectiveTypeAdapterFactory
  • 我不确定 Android,但在“普通”Java 中,您还可以创建自定义类加载器,以便对使用 ProGuard 处理的类应用一些解密。在 Java 中实现起来真的很容易,而且可能在 Android 中。

标签: android gson proguard android-proguard android-security


【解决方案1】:

ProGuard 不会混淆字符串。

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

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

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

查看差异: Link

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 2013-03-10
    • 2017-04-01
    • 2013-10-07
    • 2014-08-02
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多