# Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in D:\SDK/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} #---------------------------------基本指令区---------------------------------- -ignorewarnings -dontusemixedcaseclassnames # 是否使用大小写混合 -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -printmapping proguardMapping.txt -optimizationpasses 5 # 指定代码的压缩级别 -dontskipnonpubliclibraryclassmembers -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keepattributes *Annotation*,InnerClasses -keepattributes Signature # 避免混淆泛型 -keepattributes EnclosingMethod -keepattributes SourceFile,LineNumberTable #运行抛出异常时保留代码行号 -keepattributes Exceptions # 解决AGPBI警告 #继承自activity,application,service,broadcastReceiver,contentprovider....不进行混淆 -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.support.multidex.MultiDexApplication -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 -keep public class com.android.vending.licensing.ILicensingService -keep class android.support.** {*;} # 所有View的子类及其子类的get、set方法都不进行混淆 -keep public class * extends android.view.View{ *** get*(); void set*(***); public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); } # 这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } # 对于带有回调函数onXXEvent的,不能被混淆 -keepclassmembers class * { void *(*Event); } # 枚举类不能被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # natvie 方法不混淆 -keepclasseswithmembernames class * { native ; } # 保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #不混淆Serializable接口的子类中指定的某些成员变量和方法 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient ; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } -keepclassmembers class * { public (org.json.JSONObject); } # 不混淆R类里及其所有内部static类中的所有static变量字段,$是用来分割内嵌类与其母体的标志 -keep public class **.R$*{ public static final int *; } #---------------------------------webview------------------------------------ -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } #---------------------------------业务组件实体类--------------------------------- -keep class com.guiying.news.data.bean.** {*;} -keep class com.guiying.girls.data.bean.** {*;} #---------------------------------第三方库及jar包------------------------------- #litepal数据库不能被混淆 -keep class org.litepal.** {*;} -keep class * extends org.litepal.crud.DataSupport {*;} #Glide不能被混淆 -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } #PersistentCookieJar -dontwarn com.franmontiel.persistentcookiejar.** -keep class com.franmontiel.persistentcookiejar.** #activityrouter -keep class com.github.mzule.activityrouter.router.** { *; } #友盟统计 -keep class com.umeng.analytics.** {*;} -dontwarn com.umeng.analytics.** #友盟推送 -dontwarn com.taobao.** -dontwarn anet.channel.** -dontwarn anetwork.channel.** -dontwarn org.android.** -dontwarn org.apache.thrift.** -dontwarn com.xiaomi.** -dontwarn com.huawei.** -keep class com.taobao.** {*;} -keep class org.android.** {*;} -keep class anet.channel.** {*;} -keep class com.umeng.** {*;} -keep class com.xiaomi.** {*;} -keep class com.huawei.** {*;} -keep class org.apache.thrift.** {*;} -keep class com.alibaba.sdk.android.**{*;} -keep class com.ut.**{*;} -keep class com.ta.**{*;} #换肤框架的混淆文件 -keep class solid.ren.skinlibrary.** {*;} -dontwarn solid.ren.skinlibrary.** #高德相关混淆文件 #3D 地图 -keep class com.amap.api.** {*;} -keep class com.autonavi.** {*;} -keep class com.a.a.** {*;} -keep class com.loc.** {*;} -dontwarn com.amap.api.** -dontwarn com.autonavi.** -dontwarn com.a.a.** -dontwarn com.loc.** # simple-xml-core的SDK -keep class org.simpleframework.xml.** {*;} -dontwarn org.simpleframework.xml.** # acra的 SDK -keep class org.acra.** {*;} -dontwarn org.acra.** # 网络请求库async-http -keep class com.loopj.android.http.** {*;} -dontwarn com.loopj.android.http.** #pinyin4j -dontwarn net.soureceforge.pinyin4j.** -dontwarn demo.** -keep class net.sourceforge.pinyin4j.** { *;} -keep class demo.** { *;} -keep class com.hp.** { *;} #httpclient (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.** -dontwarn org.apache.http.protocol.** -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.org.**{*;} -keep class org.apache.harmony.**{*;} #图表库 -keep class com.github.mikephil.charting.** {*;} -dontwarn com.github.mikephil.charting.** # 讯飞语音 -keep class com.chinaMobile.** {*;} -keep class com.iflytek.** {*;} -keep class com.iflytek.sunflower.** {*;} -dontwarn com.iflytek.sunflower.** -dontwarn com.chinaMobile.** -dontwarn com.iflytek.** # greenDao混淆 -keep class de.greenrobot.dao.** {*;} -keepclassmembers class * extends de.greenrobot.dao.AbstractDao { public static Java.lang.String TABLENAME; } -keep class **$Properties # gson -keep class com.google.gson.** {*;} -keep class com.google.**{*;} -keep class sun.misc.Unsafe { *; } -keep class com.google.gson.stream.** { *; } -keep class com.google.gson.examples.android.model.** { *; } # zxing -keep class com.google.zxing.** {*;} -dontwarn com.google.zxing.** ##百度定位 -keep class com.baidu.** {*;} -keep class vi.com.** {*;} -dontwarn com.baidu.** ## okhttp -dontwarn com.squareup.okhttp.** -keep class com.squareup.okhttp.{*;} #okhttp3.x -dontwarn com.squareup.okhttp3.** -keep class com.squareup.okhttp3.** { *;} -dontwarn okio.** #retrofit -dontwarn retrofit.** -keep class retrofit.** { *; } -dontwarn okio.** #recyclerview-animators -keep class jp.wasabeef.** {*;} -dontwarn jp.wasabeef.* #multistateview -keep class com.kennyc.view.** { *; } -dontwarn com.kennyc.view.* # universal-image-loader 混淆 -dontwarn com.nostra13.universalimageloader.** -keep class com.nostra13.universalimageloader.** { *; } #-ButterKnife 7.0 -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keepclasseswithmembernames class * { @butterknife.* ; } -keepclasseswithmembernames class * { @butterknife.* ; } #eventbus 3.0 -keepattributes *Annotation* -keepclassmembers class ** { @org.greenrobot.eventbus.Subscribe ; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { (java.lang.Throwable); } #EventBus -keepclassmembers class ** { public void onEvent*(**); } -keepclassmembers class ** { public void xxxxxx(**); } # support-v4 -dontwarn android.support.v4.** -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class android.support.v4.** { *; } # support-v7 -dontwarn android.support.v7.** -keep class android.support.v7.internal.** { *; } -keep interface android.support.v7.internal.** { *; } -keep class android.support.v7.** { *; } # support design -dontwarn android.support.design.** -keep class android.support.design.** { *; } -keep interface android.support.design.** { *; } -keep public class android.support.design.R$* { *; }