【问题标题】:How to enable ProGuard obfuscation in Android Studio?如何在 Android Studio 中启用 ProGuard 混淆功能?
【发布时间】:2016-05-10 18:57:42
【问题描述】:

我必须通过在 Android Studio 中启用 Proguard 混淆来保护我的应用。我已经搜索了如何应用它的过程,但我没有得到任何明确的解决方案。当我尝试它时,我总是得到一个错误。那么谁能告诉我在我的应用中应用它的明确步骤?

我是按照以下步骤进行的:

  1. 在 Android Studio 中,打开一个 Android 项目。

  2. 更改为项目视图。

  3. 更改以下行:

    minifyEnable falseminifyEnable true

  4. 设置 ProGuard 规则(可选)

    4.1 在项目视图中,选择 proguard-rules.pro 文件。

    4.2 添加以下行告诉 ProGuard 不要混淆某些类。

    -keepclassmembers class com.dom925.xxxx 
    {
      public *
    }
    

我按照这些步骤得到的错误是

错误:任务 ':app:packageRelease' 执行失败。 无法计算 D:\Android\Pojectname\app\build\intermediates\classes-proguard\release\classes.jar 的哈希值

【问题讨论】:

标签: java android android-studio


【解决方案1】:

在 Android Studio 中启用 ProGuard。

以下是如何在 Android Studio 中启用默认 ProGuard 的示例。

  1. 进入app的build.gradle文件
  2. 启用 minifyEnabled true
  3. 启用 shrinkResources true 以减小 APK 大小
  4. proguardFiles getDefaultProguardFile('proguard-android.txt') 启用默认选项。如果您想使用自己的 proguard 文件,请使用以下规则。

    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    
        debug {
            debuggable true
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    

以下链接提供了用于 Android 的 ProGuard 设置和其他设置的链接:

更多详情请通过this link

【讨论】:

  • 为什么我们需要混淆调试?
  • 好问题!!但如果您想根据您可以或忽略的用例来使用,这是一个可用的选项。
【解决方案2】:

我发现了问题:

为您的项目打开 proguard-rules.pro 并将其添加到底部:

-dontwarn java.nio.file.Files
-dontwarn java.nio.file.Path
-dontwarn java.nio.file.OpenOption
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement

基本上我是如何解决这个问题的,我尝试在“发布”模式下运行我的应用程序并遇到了一堆类似于这个人的错误:https://github.com/square/okio/issues/144

我几乎按照他说的做了。

希望这可以帮助其他人生成他们的 APK!

在此处访问更多详细信息:

Error:Execution failed for task ':app:packageRelease'. > Unable to compute hash of /../AndroidStudioProjects/../classes.jar

【讨论】:

【解决方案3】:

如果你用jack构建android项目,那么它会自动做收缩、混淆、重新打包和multidex。 只需在下面添加:

defaultConfig {
       jackOptions {
            enabled true
        }        
    }

在构建类型中,提及项目proguard 文件:

buildTypes {
        release {
            // Jack build environment does not require minifyEnabled or shrinkResources.
            // Conceptually, the jack compiler consolidates the functionality of javac, ProGuard, and dex in a single conversion step
            //minifyEnabled = true      
            //shrinkResources true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
       }

       debug {
...................
        }
    } 

要禁用 ProGuard 混淆,需要在 proguard-project.txt 文件中添加以下行

####No obfuscation
-dontobfuscate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多