根据我所见所闻,如果有人真的想对您的软件进行逆向工程或反编译,ProGuard 不会阻止他们。但这至少是一种适度的威慑吗?我不确定以后翻译我的堆栈跟踪是否值得。
2 回答
我会推荐 ProGuard。即使没有混淆(可以显着缩短常量池中使用的名称),它也可以删除使用过的库等的“死代码”(未使用的方法)。(它也可以用来方便地将所有东西合并在一起)。
尤其是“正确”需要一些摆弄。如果有动态加载的类——但非常推荐。然而,节省空间的实际好处“取决于”可以消除的内容,并且通常会随着更多的外部库而增加。
现在,对于混淆 - 它与任何混淆器一样多:使“反编译”代码成为具有有意义名称的事物是不可能的。
但是,混淆不会保存您的超级机密算法或隐藏您的私钥:如果 JVM(或转换后的 Dalvik)必须理解它,那么反编译器和任何真正想要访问的人都可以。您的代码甚至可以以字节码形式提升并简单地通过使用。反射(想象一下一个零文档的糟糕 API):任何真正想要访问的人都可以。但也许混淆会使这项任务在成本/支出方面不可行:“这取决于”。
不想翻译堆栈跟踪?很简单:不要将它用于调试(对于从用户那里获取跟踪没有那么有用)或者不要启用混淆(其他好处仍然适用);-)
快乐编码。
Pro Guard 至少可以让您的应用程序在文件大小方面变得尽可能小!
这是一个真正的优势。
它在使用 eclipse 开发和编译时自动使用,如果您必须proguard.config=proguard.cfg
使用项目的 default.properties 文件,则提供。
这也是一个真正的优点。