混淆代码

And*_*Gis 9 obfuscation android proguard

我被要求为Android安装一个简单的应用程序.第一个事实上我会得到报酬,所以我真的不想搞砸了:).其中一个要求是必须对代码进行模糊处理.

我学会了混淆的一般想法,但我不想犯任何愚蠢的错误.

我究竟需要做些什么来使代码混淆?将它作为发布版本导出是否完成工作,还是需要其他一些步骤?任何评论也表示赞赏.

PS.如果重要的话,我正在使用Eclipse.

编辑

从anwsers中建议的文章:

要启用ProGuard的,这样它会作为一个Ant或Eclipse构建的一部分,设置在/project.properties文件proguard.config属性.路径可以是绝对路径或相对于项目根的路径.

如果将proguard.cfg文件保留在其默认位置(项目的根目录),则可以指定其位置,如下所示:

proguard.config = proguard.cfg

我确实在项目的目录中有project.properties文件.但是我没有proguard.cfg文件.相反,我有proguard-project.txt文件.我想这是一个替代品.

project.properties:

此文件由Android Tools自动生成.不要修改此文件 - 您的更改将被删除!

必须在版本控制系统中检查此文件.

要自定义Ant构建系统使用的属性,请编辑"ant.properties",并覆盖值以使脚本适应您的项目结构.

要使ProGuard能够缩小和混淆代码,请取消注释(可用属性:sdk.dir,user.home):

proguard.config = $ {sdk.dir} \工具\ proguard的\ proguard的-android.txt:proguard的-project.txt

项目目标.目标=机器人-7-

最初除了最后一行之外的所有内容都被注释掉了.

proguard-project.txt中,所有内容都被注释掉了.

我想我已经迷失在这里,所以我会非常感激如果有人可以一步一步地告诉我我应该做什么,以及如何检查它是否真的有效.

Ton*_*han 23

官方开发网站上的文章已过时.从SDK Tools r17开始,他们改变了ProGuard配置的工作方式.基本上他们将以前proguard.cfg分成两个文件(并简单地制作它们.txt文件):proguard-android.txtproguard-project.txt.proguard-android.txt驻留在您的{SDK dir}\tools\proguard目录中,位于您的proguard-project.txt每个项目目录中.

他们拆分文件,以便Android团队认为相当标准的一般配置/标志将在proguard-android.txt文件中,并且可以使用每个SDK Tools修订版进行更新(基本上是静默).然后是任何开发人员/项目特定的标志,开发人员可以添加到proguard-project.txt文件中.

这就是为什么你注意到proguard-project.txt文件中的所有内容都被注释掉了,因为一般来说大多数人都没有任何项目特定的需求,他们只想用标准设置运行ProGuard并完成它.

供参考(一个非常好的解释):http://tools.android.com/recent/proguardimprovements

循序渐进(日复一日:P)

(使用Eclipse IDE)要启用ProGuard,只使用默认设置进行收缩和混淆:

  • 首先将您的SDK工具更新到最新版本(撰写本文时为r19)
  • project.properties取消注释行,上面写着:

proguard.config = $ {sdk.dir} \工具\ proguard的\ proguard的-android.txt:proguard的-project.txt

如果您在r17之前创建了项目,那么您可能看不到相同的内容.如果是这种情况,我建议您创建一个新的虚拟项目(更新SDK工具后),然后复制proguard-project.txtproject.properties文件.

而已!ProGuard现在将启用并且它将运行,但在发布版本上运行(当您使用Android Tools并导出已签名/未签名的apk时).

当您进行发布构建时,您会注意到将在项目文件夹中创建一个新的ProGuard文件夹.在此文件夹中,您可以找到四个文件,其中包含保留或删除的类/方法等内容.另请注意,当您进行模糊处理时,如果出现错误,您还会混淆堆栈跟踪.

编辑:(9/4/12)只是想更新此答案以反映工具r20中的更改.

Android团队现在添加了一个额外的proguard配置文件.它是proguard-android-optimize.txt,它也驻留在{SDK dir}\tools\proguard目录中.此文件与原始proguard-android.txt配置文件相同,只是打开了 proguard优化.

添加此附加文件是为了方便那些想要启用优化的人(可能这样他们可以执行删除日志调用之类的操作,这需要打开优化).现在您只需在project.properties文件中指向此文件,如下所示:

proguard.config=${sdk.dir}\tools\proguard\proguard-android-optimize.txt:proguard-project.txt
Run Code Online (Sandbox Code Playgroud)

和以前一样,不要试图改变任何proguard-android...配置文件.任何项目特定标志都应该proguard-project.txt放在项目文件夹中的文件中.