Android Proguard混淆小記

混淆的基本語(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>;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,939評(píng)論 25 709
  • 自殺 一 張良玉已經(jīng)化好了妝,面上抹了厚厚的一層粉,白得像紙,嘴唇卻故意涂得鮮紅,紅得像血。 眼前的人都是來(lái)來(lái)回回...
    請(qǐng)叫我一劍閱讀 1,015評(píng)論 3 16
  • 本篇教程中涉及大量光子問(wèn)題,可先移步:【渲染中的光學(xué)】 有助于理解接下來(lái)所講內(nèi)容。 接下來(lái)內(nèi)容可能較為枯燥,但是基...
    卜噪大仙閱讀 14,254評(píng)論 8 64
  • 咖啡冥想的秘決:1發(fā)動(dòng)喜悅的引擎。2、專(zhuān)注于想美好的事情。3、回想每一個(gè)細(xì)節(jié)。4、曾經(jīng)做過(guò)的最難忘的好事。5、隨喜...
    快樂(lè)小屋劉麗華閱讀 124評(píng)論 0 0

友情鏈接更多精彩內(nèi)容