使用ProGuard进行Android代码混淆...如何知道代码已经被混淆?

9

我有一个Android项目,最近经过ProGuard混淆后发布到市场上。

项目顺利导出,但是我怎么知道它已经被混淆了呢?有什么方法可以验证混淆是否成功?

3个回答

11

请查找 dump.txtmapping.txtseeds.txtusage.txt 文件。它们可能在你的项目目录下的 proguard 文件夹中。这些文件是在运行ProGuard混淆代码时创建的。

这些文件包含有关混淆信息的内容,特别有用的是 mapping.txt 文件,其中显示了ProGuard将你的各种成员名称转换为什么名称。


1
我在项目目录中有一个ProGuard文件夹,但里面什么也没有……什么都没有……我应该假设ProGuard没有正确混淆我的代码吗?这些文件可能在其他目录中吗? - dell116
你的项目中有没有任何 proguard 文件夹?如果没有,我想它可能没有正确运行。 - jakebasile
是的,proguard文件夹在那里...但是它没有任何内容...我在硬盘上找不到你提到的任何文件...所以当我通过proguard运行它时,一些东西肯定出了问题...噢噢... - dell116
你可以取消发布你的应用,直到你能够正确地实现混淆,但这取决于你是否认为这会有所帮助。 - jakebasile

3

1
谢谢您。我反编译了两个不同的应用程序,一个是我混淆过的,另一个则没有。这两个应用程序(未混淆和混淆)的代码看起来一样。变量名已更改,但类名等仍然相同。这就是混淆的工作原理吗?为什么我没有混淆的项目中变量名有所改变? - dell116
这取决于您如何设置Proguard的工作方式...但我对此没有太多经验! - Pedro Loureiro

0

免责声明: 我不是decompileandroid.com的所有者,也没有被付费推广它。我是一个开发者,对这项服务感到满意。

实际上,有一种比获取多个不同的工具并将其中一个的输出传递给另一个更简单的方法(当然这样可以更好地控制正在进行的操作)。你可以使用这项服务。

decompileandroid.com

基本上,您只需上传一个.apk文件,它就会为您完成所有这些步骤。然后,您可以下载一个包含反编译源代码的.zip文件。

您可以先上传以调试模式构建的.apk文件,然后再上传以发布模式构建的.apk文件。只需确保在发布构建的build.gradle文件中设置了minifyEnabled标志为true

在我的情况下,差异非常明显-在缩小版构建中,我的大多数类都被命名为a、b、c等。


哎呀!我的意思是,我相信你已经知道将可调试和未混淆的构建上传到Web服务器的影响。毕竟,我们正在谈论混淆,以便第三方无法阅读您的代码。虽然这个网站看起来很不错,但我不确定我会信任它。 - dell116
当然,在大多数情况下,您不希望将您的APK上传到远程服务器中,特别是在商业项目中。但我提供这个作为一个更简单的替代方案。在我的例子中,这只是一个测试项目,所以我没有任何担忧。当然,如果可能的话,您总是可以只上传混淆版本,这样就可以看到混淆效果如何了。在那种情况下,您只需要观察混淆是否成功即可。 - todor.hr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接