我被要求为Android安装一个简单的应用程序。第一个事实上我会得到报酬,所以我真的不想搞砸了:)。其中一个要求是必须对代码进行模糊处理。
我学会了混淆的一般想法,但我不想犯任何愚蠢的错误。
我需要做些什么来使代码混淆?将它作为发布版本导出是否完成工作,还是需要其他一些步骤?任何评论也表示赞赏。
PS。如果重要的话,我正在使用Eclipse。
修改
从thewsers中建议的文章:
启用ProGuard以使其作为Ant或Eclipse构建的一部分运行, 在中设置proguard.config属性 /project.properties文件。路径可以是绝对的 路径或相对于项目根目录的路径。
如果您将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 中,所有内容都已注释掉。
我想我已经迷失在这里,所以我会非常感激如果有人可以一步一步地告诉我我应该做什么,以及如何检查它是否真的有效。
答案 0 :(得分:22)
官方开发网站上的文章已过时。从SDK Tools r17开始,他们改变了ProGuard配置的工作方式。基本上他们将以前的proguard.cfg
分成两个文件(也简单地将它们设为.txt文件):proguard-android.txt
和proguard-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及其缩小和混淆:
project.properties
中取消注释:proguard.config = $ {sdk.dir} \工具\ proguard的\ proguard的-android.txt:proguard的-project.txt
如果您在r17之前创建了项目,那么您可能看不到相同的内容。如果是这种情况,我建议您创建一个新的虚拟项目(更新SDK工具后),然后复制proguard-project.txt
和project.properties
文件。
就是这样! ProGuard现在将启用,它将在发布版本上运行,但仅(当您使用Android工具并导出已签名/未签名的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
和以前一样,不要试图改变任何proguard-android...
配置文件。任何项目特定的标志都应该放在项目文件夹中的proguard-project.txt
文件中。
答案 1 :(得分:2)