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

2022-09-01 07:22:37

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

我通过以下步骤执行此操作:

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

  2. 更改为项目视图。

  3. 更改以下行:

    minifyEnable falseminifyEnable true

  4. 设置护卫规则(可选)

    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


答案 1

在 Android Studio 中启用 ProGuard。

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

  1. 转到应用的 build.gradle 文件
  2. 启用缩小启用真实
  3. 启用收缩资源真实以减小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 设置和其他设置的链接:

有关更多详细信息,请访问此链接


答案 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!

访问更多细节在这里:

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


推荐