【问题标题】:Should I use ProGuard?我应该使用 ProGuard 吗?
【发布时间】:2013-08-15 18:53:49
【问题描述】:

我想在 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:/.../...

【问题讨论】:

    标签: android apk


    【解决方案1】:

    对 Android 应用程序进行逆向工程非常容易,因此,如果您想防止这种情况发生,是的,您应该使用 ProGuard 的主要功能:混淆

    ProGuard 还有另外两个重要的功能:shrinking,它消除了未使用的代码,显然非常有用,还有优化。不过,优化是使用 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) 中的那个。

    【讨论】:

    • 感谢您的解释,但我没有他们在 Android 网站上提到的 project.properties 文件和 proguard.cfg 文件。我只有 local.properties 文件。
    • @user2687045 我已经更新了答案。不过,我自己并没有使用 Android Studio,所以这只是一个猜测。
    【解决方案2】:

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

    在混淆之后也要小心彻底测试您的应用,因为这是对应用的更改,有时可能会发生意想不到的事情,尤其是在 oyu 大量使用反射的情况下。

    【讨论】:

      【解决方案3】:

      进行 ProGuard 混淆的一个重要案例是,一些坏人解压 apk 并将购买模块注入/替换到他们的。我们不能指望所有用户都只从 Play 商店下载 apk,用户的购买账户可能会被盗。

      【讨论】:

      • 哇,从未考虑过关于 proguard 的用户安全问题。绝对是使用它的另一个理由。谢谢。
      【解决方案4】:

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

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

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

      proguard.config=proguard.cfg

      【讨论】:

      • 它说“当你创建一个Android项目时,会在项目的根目录中自动生成一个proguard.cfg文件。”但我那里没有proguard.cfg文件,其他任何地方都没有在项目目录中。
      • @user2687045 您还可以从项目根文件夹中的 default.properties 文件中删除以下行:proguard.config=proguard.cfg
      猜你喜欢
      • 2016-01-24
      • 2011-12-26
      • 2021-12-10
      • 2010-12-25
      • 2014-05-27
      • 2010-12-25
      • 2018-09-11
      • 2012-07-02
      • 2017-04-21
      相关资源
      最近更新 更多