我应该使用ProGuard吗?

时间:2013-08-15 18:53:49

标签: android apk

我想在Android Studio中生成已签名的APK,它为我提供了运行ProGuard的选项。它要求我给出配置文件路径,但我没有配置文件。如何创建一个?我应该使用ProGuard吗? 你可以轻松解压不使用ProGuard的APK文件吗?

编辑: 谢谢你的答案,但我无法在任何地方找到proguard.cfg文件。我在项目的根目录中只有属性文件是local.properties文件,当我在Android Studio中打开它时,我得到了这个:

# This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.

# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=C:/.../...

4 个答案:

答案 0 :(得分:18)

对Android应用程序进行逆向工程很容易,所以如果你想防止这种情况发生,是的,你应该使用ProGuard来实现它的主要功能:模糊处理

ProGuard还有另外两个重要功能:缩小,它可以消除未使用的代码,显然非常有用,而且优化。然而,优化使用Java字节码进行操作,并且由于Android运行在从Java字节码转换的Dalvik字节码上,因此某些优化将无法正常工作。所以你应该小心。

Android网站上有instructions on how to use proguard。你需要检查的主要是你有

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

project.properties文件中。由于您提到您使用的是Android Studio并且没有此文件,但系统会询问您有关配置文件的信息,请尝试选择Android SDK中的文件(tools/proguard/proguard-android.txt)。

答案 1 :(得分:12)

使用ProGuard是可选的,无论您是否使用它,都可以轻松解压apk并获取资源(图形和其他资源)。如果你不使用ProGuard,应用程序代码也可以很容易地重建,使用ProGuard,尝试理解在哪里发生的事情变得非常困难和麻烦(尽管不是不可能给予足够的时间和精力)。

在混淆之后要小心测试你的应用程序,因为它是对应用程序的更改,有时可能会发生意外事情,特别是如果oyu使用反射很多。

答案 2 :(得分:8)

进行ProGuard混淆的一个重要案例是,一些坏人解包apk和注入/替换购买模块到他们的。我们不能指望所有用户只能从Play商店下载apk,并且用户可以窃取他们的购买帐户。

答案 3 :(得分:2)

运行ProGuard是完全可选的,但强烈推荐。

您可以在这里找到所需的一切: http://developer.android.com/tools/help/proguard.html

您还可以从项目根文件夹的default.properties文件中删除以下行:

proguard.config = proguard.cfg