app的builde.gradle的文件下,buildTypes節點添加release節點,minifyEnabled屬性表示是否開啟混淆,proguardFiles表示混淆依賴的文件,具體開啟方法如下:
buildTypes { release { minifyEnabled true //開啟混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆配置文件為 proguard-rules.pro
} }
混淆配置:
#官方的一些配置就不在這里說明了,這里只說下自定義混淆的簡單配置方法,通過自定義注解類,保持所有被注解的類名、方法、變量不被混淆掉
-keep class proguard.conf.MyKeep#自定義注解類不能混淆
通過注解控制混淆,需要注意以下幾點:
1.如果整個類都需要保留,則在類上面增加注解,混淆配置為
-keep @proguard.conf.MyKeep class *{*;}#包含類名
-keepclassmembers @proguard.conf.MyKeep class *{*;}#不包含類名
2.如果是類的全部成員變量都需要保留,在類上面增加注解,混淆配置為
-keepclasseswithmembers @proguard.conf.MyKeep class *{<fields>;}#包含類名
-keepclassmembers @proguard.conf.MyKeep class *{<fields>;}#不包含類名
3.如果是類的全部方法都需要保留,在類上面增加注解,混淆配置為
-keepclasseswithmembers @proguard.conf.MyKeep class *{<methods>;}#包含類名
-keepclassmembers @proguard.conf.MyKeep class *{<methods>;}#不包含類名
4.如果是類中的某個變量需要保留,在需要保留的變量上面增加注解,混淆配置為
-keepclasseswithmembers class *{
@proguard.conf.MyKeep <fields>;
}#包含類名
-keepclassmembers class *{
@proguard.conf.MyKeep <fields>;
}#不包含類名
5.如果是勒種的某個方法需要保留,在需要保留的方法上面增加注解,混淆配置為
-keepclasseswithmembers class *{
@proguard.conf.MyKeep <methods>;
}#包含類名
-keepclassmembers class *{
@proguard.conf.MyKeep <methods>;
}#不包含類名
關於其他的一些混淆,網上有很多參考資料,基本上都是基於保留 繼承於某個類 或者實現了某個接口 的方式進行的保留,這邊就不記載了,有需要網上再找吧