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