如何在Android Studio中启用ProGuard混淆?

vis*_*ess 26 java android android-studio

我必须通过在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 *
    }
    
    Run Code Online (Sandbox Code Playgroud)

通过以下步骤获得的错误是

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

Mah*_*ade 51

在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'
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

这些链接提供了Android和其他设置的ProGuard设置链接:

有关详细信息,请浏览此链接


Har*_*had 12

我解决了这个问题:

打开项目的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
Run Code Online (Sandbox Code Playgroud)

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

我几乎跟着他说的话并修好了.

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

访问更多详细信息:

错误:任务':app:packageRelease'的执行失败.>无法计算/../AndroidStudioProjects/../classes.jar的哈希值