繁体   English   中英

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

[英]How to enable ProGuard obfuscation in 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 * }

我按照步骤得到的错误是

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

在 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 设置和其他设置的链接:

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

我解决了这个问题:

打开项目的 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/../classes.jar 的哈希值

如果您使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM