1. Android Studio / Gradle
如果有多个module,只要对application module定义混淆编译即可,
对application module的build.gradle,修改minifyEnabled为true
android { //... buildTypes { release { minifyEnabled true //混淆打包 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
Android Studio会同时使用预定义(默认)的混淆编译规则和自定义的混淆规则(在proguard-rules.pro文件中)。
The getDefaultProguardFile('proguard-android.txt')
method obtains the default ProGuard settings from the Android SDK tools/proguard/
folder.
如果在当前的application module或者依赖的library module中使用了第三方的库,并不需要显式添加规则
-libraryjars xxx
添加了反而有可能在打包的时候遭遇同一个jar多次被指定的错误,
一般只需要添加忽略警告和保持某些class不被混淆的声明。
例如
#忽略警告的声明 -dontwarn org.androidannotations.api.rest.** #保留签名 这个比较重要 -keepattributes Signature #只有一个 * 表示仅仅是该目录下的类不混淆,子目录依然会被混编 -keep class cn.beecloud.* { *; } #两个 * 表示该目录下的所有类 包括子目录下的都不混淆编译 -keep class com.google.** { *; } #一般用到的自定义bean(entity)也需要添加例外 #...
2. Eclipse ADT
在项目根目录下文件 project.properties 中添加
proguard.config=proguard-project.txt
然后在项目根目录下文件 proguard-project.txt 中定义混淆内容,需要添加的内容相对来说比较多,而且
-libraryjars xxx
也是必须的。
不额外介绍,网上资源比较多。