首页 文章

如何在Android Studio中使用ProGuard?

提问于
浏览
96

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

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

enter image description here

请帮我 . :(

5 回答

  • 70

    注意:现在而不是

    runProguard false
    

    你需要使用

    minifyEnabled false
    
  • 0

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

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

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

    ./gradlew assembleRelease
    

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

    IDE main window showing Build Variants

  • 1

    您可以为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生成构建

    • 转到右侧面板中的gradle任务,在模块任务下搜索 assembleRelease/assemble(#your_defined_buildtype)

    • 转到左侧面板中的构建变量,然后从下拉列表中选择构建

    • 转到文件资源管理器中的项目根目录,然后打开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

    这里的其他答案是关于使用proguard的很好的参考 . 但是,我没有't seen an issue discussed that I ran into that was a mind bender. After you generate a signed release .apk, it' s放在你的应用程序的 /release 文件夹中,但我的应用程序有一个不在 /release 文件夹中的apk . 因此,我花了几个小时反编译错误的apk想知道为什么我的proguard更改没有影响 . 希望这有助于某人!

相关问题