混淆的基本語(yǔ)法
-libraryjars class_path 應(yīng)用的依賴(lài)包,如android-support-v4
-keep [,modifier,...] class_specification 不混淆某些類(lèi)
-keepclassmembers [,modifier,...] class_specification 不混淆類(lèi)的成員
-keepclasseswithmembers [,modifier,...] class_specification 不混淆類(lèi)及其成員
-keepnames class_specification 不混淆類(lèi)及其成員名
-keepclassmembernames class_specification 不混淆類(lèi)的成員名
-keepclasseswithmembernames class_specification 不混淆類(lèi)及其成員名
-assumenosideeffects class_specification 假設(shè)調(diào)用不產(chǎn)生任何影響,在proguard代碼優(yōu)化時(shí)會(huì)將該調(diào)用remove掉。如system.out.println和Log.v等等
-dontwarn [class_filter] 不提示warnning
常規(guī)不可混淆的代碼
## ----------------------------------
## 常規(guī)規(guī)則
## ----------------------------------
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
1.騰訊系列SDK混淆
## ----------------------------------
## 騰訊統(tǒng)計(jì)sdk混淆
## ----------------------------------
-keep class com.tencent.stat.** {* ;}
-keep class com.tencent.mid.** {* ;}
## ----------------------------------
## 騰訊bugly sdk混淆
## ----------------------------------
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
## ----------------------------------
## 微信登錄sdk
## ----------------------------------
-keep class com.tencent.mm.sdk.** {*;}
2.GSON混淆
## ----------------------------------
## Gson 相關(guān)的混淆配置
## ----------------------------------
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.** { *; }
-keep class com.google.gson.stream.** { *; }
3.ButterkKnife混淆
## ----------------------------------
## butterknife 相關(guān)的混淆配置
## ----------------------------------
-dontwarn butterknife.internal.**
-keep class **$$ViewInjector { *; }
-keepnames class * { @butterknife.InjectView *;}
4.EventBus混淆
## ----------------------------------
## EventBus 相關(guān)的混淆配置
## ----------------------------------
-keepattributes *Annotation*
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
-keepclassmembers class ** {
public void onEvent*(**);
}
5.v4 包的混淆
## ----------------------------------
## v4 包的混淆
## ----------------------------------
#-libraryjars ./libs/android-support-v4.jar
#-dontwarn android.support.**
#-dontwarn android.support.v4.**
-dontwarn **CompatHoneycomb
-dontwarn **CompatHoneycombMR2
-dontwarn **CompatCreatorHoneycombMR2
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
6.universal-image-loader 混淆
## -------------------------------------------
## universal-image-loader 混淆
## -------------------------------------------
-dontwarn com.nostra13.universalimageloader.**
-keep class com.nostra13.universalimageloader.** { *; }
7.volley混淆
## -------------------------------------------
## volley混淆
## -------------------------------------------
-keep class com.android.volley.** {*;}
-keep class com.android.volley.toolbox.** {*;}
-keep class com.android.volley.Response$* { *; }
-keep class com.android.volley.Request$* { *; }
-keep class com.android.volley.RequestQueue$* { *; }
-keep class com.android.volley.toolbox.HurlStack$* { *; }
-keep class com.android.volley.toolbox.ImageLoader$* { *; }
8.高德地圖sdk混淆
## ----------------------------------
## 高德地圖sdk混淆
## ----------------------------------
# -libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
#-libraryjars libs/AMap_2DMap_V2.8.1_20160202.jar
#-libraryjars libs/AMap_Location_v2.3.0_20160112.jar
#-libraryjars libs/AMap_Search_V2.8.0_20160105.jar
-dontwarn com.amap.api.**
-dontwarn com.a.a.**
-dontwarn com.autonavi.**
-keep class com.amap.api.** {*;}
-keep class com.autonavi.** {*;}
-keep class com.a.a.** {*;}
9.融云混淆
-keepattributes Exceptions,InnerClasses
-keepattributes Signature
-keep class io.rong.** {*;}
-keep class * implements io.rong.imlib.model.MessageContent {*;}
-dontwarn io.rong.push.**
-dontnote com.xiaomi.**
-dontnote com.google.android.gms.gcm.**
-dontnote io.rong.**
-ignorewarnings
-keep class com.evervc.ttt.push.RongPushMessageReceiver {*;}
10.個(gè)推混淆
## ----------------------------------
## 個(gè)推
## ----------------------------------
-dontwarn com.igexin.**
-keep class com.igexin.**{*;}
11.OrmLite混淆
#-libraryjars libs/ormlite-android-4.48.jar
#-libraryjars libs/ormlite-core-4.48.jar
-keep class com.j256.**{*;}
-keepclassmembers class com.j256.** { *; }
-keep enum com.j256.**{*;}
-keepclassmembers enum com.j256.** { *; }
-keep interface com.j256.**{*;}
-keepclassmembers interface com.j256.** { *; }
12.不混淆org.apache.http.legacy.jar
-dontwarn android.net.compatibility.**
-dontwarn android.net.http.**
-dontwarn com.android.internal.http.multipart.**
-dontwarn org.apache.commons.**
-dontwarn org.apache.http.**
-keep class android.net.compatibility.**{*;}
-keep class android.net.http.**{*;}
-keep class com.android.internal.http.multipart.**{*;}
-keep class org.apache.commons.**{*;}
-keep class org.apache.http.**{*;}
13.JS不混淆
-keepattributes Annotation
-keepattributes JavascriptInterface
-keep class android.webkit.JavascriptInterface {*;}
以上是第三方SDK混淆規(guī)則
我們代碼中,還需要把自定義view、model類(lèi)、自定義的類(lèi)都摘出來(lái),還有就是內(nèi)部類(lèi)
## ----------------------------------
## 自定義類(lèi)不能混淆
## ----------------------------------
-keep class com.yao.test.utils.**{*;}
-keep class com.yao.test.service.**{*;}
-keep class com.yao.test.view.**{*;}
-keep class com.yao.test.net.**{*;}
## ----------------------------------
## model類(lèi)混淆
## ----------------------------------
-keep class com.yao.test.model.** { *; }
#內(nèi)部類(lèi)不混淆
-keepnames class com.yao.test.controller.relation.MyRelationshipResultActivity$Rank{
public <fields>;
public <methods>;
}