我试图缩小,优化和模糊我的应用程序与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)。不过,如果有选择的话,我想混淆这些字符串。那么有没有可能那么请让我知道!
谢谢你的帮助!
最佳答案
proguard不会混淆字符串。
gson注释确保映射类正常工作非常重要。
如果删除注释并使用proguard,当应用程序需要将json转换为pojo时,将发生错误。因为代码将尝试查找属性“a”而不是“test”(因为您的代码是模糊的)。
因此,gson注释很重要。
还有其他选项可以混淆代码,比如dexguard,但它不是免费的。
查看差异:
Link