如何在Android Studio中使用ProGuard?

问题描述 投票:96回答:5

这是我在Android Studio中的第一个项目,我的应用程序代码没有混淆。我在build.gradle文件中使用此配置:

我正在使用Build> Generate Signed APK ...检查Run Proguard。而且,当我使用Apk_OneClick.v4.2进行测试时,我的代码完全易于理解:

请帮我。 :(

android android-studio proguard
5个回答
70
投票

您可能实际上并未通过签名向导签署APK的发布版本。您可以使用以下命令从命令行构建发布APK:

./gradlew assembleRelease

或者您可以从Build Variants视图中选择发布变体并从GUI构建它:


50
投票

您可以为proguard实现配置build.gradle文件。它可以是模块级别或项目级别。

 buildTypes {

    debug {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'

    }

}

显示的配置是针对调试级别的,但您可以在buildTypes中编写自己的构建样式,如下所示:

    myproductionbuild{
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }

最好将minifyEnabled false和productionbuild以及其他版本的调试作为minifyEnabled true

将您的proguard-rules.txt文件复制到模块或项目文件夹的根目录中

$YOUR_PROJECT_DIR\YoutProject\yourmodule\proguard-rules.txt

您可以根据需要更改文件的名称。配置完成后,使用三个可用选项之一根据buildType生成构建

  1. 转到右侧面板中的gradle任务,在模块任务下搜索assembleRelease/assemble(#your_defined_buildtype)
  2. 转到左侧面板中的Build Variant,然后从下拉列表中选择构建
  3. 转到文件资源管理器中的项目根目录,然后打开cmd / terminal并运行

Linux ./gradlew assembleRelease or assemble(#your_defined_buildtype)

Windows gradlew assembleRelease or assemble(#your_defined_buildtype)

你可以在你的module / build目录中找到apk。

有关配置和proguard文件位置的更多信息,请参见链接

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard


39
投票

注意:现在而不是

runProguard false

你需要使用

minifyEnabled false

1
投票

尝试将'proguard-rules.txt'文件重命名为'proguard-android.txt'并删除gradle文件中对'proguard-rules.txt'的引用。 getDefaultProguardFile(...)调用引用了一个不同的默认proguard文件,一个由Google提供,而不是在您的项目中。所以也删除它,这样gradle文件在这里读取:

buildTypes {
    release {
        runProguard true
        proguardFile 'proguard-android.txt'
    }
}

0
投票

这里的其他答案是关于使用proguard的很好的参考。但是,我没有看到我讨论的一个问题,我遇到了一个令人费解的问题。生成一个签名版本.apk后,它会放在你的应用程序的/release文件夹中,但我的应用程序有一个不在/release文件夹中的apk。因此,我花了几个小时反编译错误的apk想知道为什么我的proguard更改没有影响。希望这有助于某人!

© www.soinside.com 2019 - 2024. All rights reserved.