搞定Android Proguard

背景

各种引用库,各种混淆,心好累。
所以,有了AndroidKnife/proguard-config

混淆设置

Android中采用Proguard进行代码混淆。每次混淆,都会开始找寻混淆配置,在此开源库中,你可以找到你想要的,如果没找到,没关系,可以PULL REQUEST。

build.gradle

正常在build.gradle中加入混淆配置文件即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
android {
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
shrinkResources true

// specific proguard files
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-gson.pro'
proguardFile 'proguard-square-okio.pro'
...

// As of Gradle Android plugin 1.1.0, the test APK has a separate config
testProguardFile 'proguard-rules-test.pro'
}
}
}

proguard-rules.pro

将混淆设置加入proguard-rules.pro文件也是一种方式:

1
-include xxx

consumerProguardFiles

开源库中可以依赖此标志来指定库的混淆方式,此会将*.pro文件打包进入aar中,库混淆时候会自动使用此混淆配置文件。

需要注意的是,以consumerProguardFiles方式加入的混淆具有以下特性:

  • *.pro文件会包含在aar文件中
  • 这些pro配置会在混淆的时候被使用
  • 此配置针对此aar进行混淆配置
  • 此配置只对库文件有效,对应用程序无效

所以以AndroidKnife/proguard-config开源库,只要一行代码即可搞定外部混淆:

1
2
3
4
dependencies {
...
compile 'com.hwangjr.proguard:proguardconfig:1.0.1@aar'
}

总结

使用此库大善,欢迎pull request。