我正在尝试使用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)。不过,如果有任何选择,我想混淆那些字符串。那么有任何可能性请告诉我!
感谢您的帮助!
答案 0 :(得分:2)
ProGuard不会混淆字符串。
Gson注释确保您的映射类能正常工作非常重要。
如果删除注释并使用proguard,当您的应用需要将JSON转换为POJO时,将发生错误。因为代码会尝试找到属性" a"而不是"测试" (因为你的代码被混淆了)。 因此,Gson注释它很重要。
还有其他混淆代码的选项,例如DexGuard,但它不是免费的。
查看差异: Link