Gradle Cheat Sheet (20): Configuring Proguard

  Proguard可以让Android插件剔除未使用的代码和资源,减小应用的体积,只需配置minifyEnabled 和shrinkResources 即可。

  以这里的工程为例,在/app/build.gradle中加入了对Google Play Services的依赖:

dependencies {
    ...
    compile 'com.google.android.gms:play-services:8.4.0'
}

而实际上代码中并未使用Google Play Services。Proguard可以找到并剔除未使用的代码。Google Play Services还包含了很多如drawables等的资源文件,打开shrinkResources 即可剔除未使用的资源文件。在release 之外,定义两个buildTypes,shrunk 打开了minifyEnabled 和shrinkResources ,big 则没有:
android {
    ...
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        shrunk {
            minifyEnabled true
            shrinkResources true
        }
        big {
            minifyEnabled false
            shrinkResources false
        }
    }
}

在app/build/outputs/apk可以找到对应shrunk和big的APK,app-shrunk-unsigned.apk约有1.2M,而app-big-unsigned.apk则约有2.8M。

  Proguard还可以添加混淆防止逆向工程。更多内容可以参考下面的链接。

http://proguard.sourceforge.net/
http://developer.android.com/tools/help/proguard.html
http://tools.android.com/tech-docs/new-build-system/resource-shrinking