如何准备一个proguard文件及其中包含哪些内容?

时间:2016-07-05 22:34:29

标签: android gradle functional-programming android-gradle android-proguard

我正在开发Android Studio中的应用,我想将proguard添加到我的应用中。但我不知道该怎么办?我也想了解它的背景。谁能给我看点什么?谢谢。

2 个答案:

答案 0 :(得分:4)

在您的gradle文件集中设置true

您可以定义是否在调试,发布或两者中启用了proguard

minifyEnabled

你也可以设置proguardFiles来配置他,检查这个site以查看有关它的文档,看看这个例子:

buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            proguardFiles 'proguard-rules.pro'
        }
    }

如果要使用自定义词典进行代码混淆,请使用词典文件设置此配置:

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/balysv/Documents/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-optimizationpasses 5
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose

字典文件是一个简单的文本文件,其中包含您要用来混淆代码的标签,每行1个标签。

答案 1 :(得分:3)

要使您的APK文件尽可能小,您应该启用收缩以删除发布版本中未使用的代码和资源。

ProGuard提供了代码缩减功能,它可以检测并删除打包应用中未使用的类,字段,方法和属性,包括来自附带代码库的那些(使其成为处理64k参考的有用工具)极限)。

ProGuard还优化字节码,删除未使用的代码指令,并使用短名称对剩余的类,字段和方法进行模糊处理。混淆的代码使您的APK难以进行逆向工程,这在您的应用使用安全敏感功能(例如许可验证)时尤其有用。

例如,build.gradle文件中的以下代码段可以使发布版本的代码缩小:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

Example of use from Proguard, from Android Studio