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

35

我需要通过在Android Studio中启用Proguard混淆来保护我的应用程序。我已经搜索了如何应用它的过程,但没有找到清晰的解决方案。每当我尝试时,总是会出现错误。所以,有人能告诉我在我的应用程序中应用它的清晰步骤吗?

我按照以下步骤进行操作:

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

  2. 切换到Project View。

  3. 更改以下行:

    minifyEnable falseminifyEnable true

  4. 设置ProGuard规则(可选)

    4.1 在Project View中,选择proguard-rules.pro文件。

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

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

按照步骤操作后我遇到的错误是:

Error:Execution failed for task ':app:packageRelease'。 无法计算D:\Android\Pojectname\app\build\intermediates\classes-proguard\release\classes.jar的哈希值。


请发布您的build.gradle文件,这样我们就可以根据您的依赖项提供更准确的答案。 - Gueorgui Obregon
这是一些关于编程的参考资料:https://dev59.com/wF0Z5IYBdhLWcg3w6jse - Gueorgui Obregon
这里有一些参考资料:https://dev59.com/YGEi5IYBdhLWcg3w2fYm - Ashish Rajvanshi
3个回答

58

如何在Android Studio中启用ProGuard:

以下是启用Android Studio默认ProGuard的示例。

  1. 进入应用程序的build.gradle文件
  2. 启用minifyEnabled true
  3. 启用shrinkResources true以减小APK大小
  4. proguardFiles getDefaultProguardFile('proguard-android.txt')启用默认的proguard文件。如果您想使用自己的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设置和其他设置:

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


1
为什么我们需要在调试时进行混淆? - Akhil Surapuram
好问题!但如果您想根据用例使用,这是一个可用选项,或者您可以忽略它。 - Maheshwar Ligade

16

我找到了问题所在:

打开你项目中的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 的哈希值


但是我仍然收到了错误信息,朋友。http://stackoverflow.com/questions/35150026/how-to-generate-proguard-obfuscation-in-using-android-studio - visual process

1
如果你正在使用Jack构建Android项目,那么它会自动进行缩小、混淆、重新打包和多Dex处理。只需在以下位置添加:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接