# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # 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 *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile # 代码混淆压缩比,在0~7之间,默认为5,一般不做修改 -optimizationpasses 5 # 混合时不使用大小写混合,混合后的类名为小写 -dontusemixedcaseclassnames # 指定不去忽略非公共库的类 -dontskipnonpubliclibraryclasses # 指定不去忽略非公共库的类成员 -dontskipnonpubliclibraryclassmembers # 这句话能够使我们的项目混淆后产生映射文件 # 包含有类名->混淆后类名的映射关系 -verbose # 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。 -dontpreverify # 保留Annotation不混淆 这在JSON实体映射时非常重要,比如fastJson -keepattributes *Annotation*,InnerClasses # 避免混淆泛型 -keepattributes Signature # 抛出异常时保留代码行号 -keepattributes SourceFile,LineNumberTable # 指定混淆是采用的算法,后面的参数是一个过滤器 # 这个过滤器是谷歌推荐的算法,一般不做更改 -optimizations !code/simplification/cast,!field/*,!class/merging/* # 忽略警告 -ignorewarnings # 设置是否允许改变作用域 -allowaccessmodification # 把混淆类中的方法名也混淆了 -useuniqueclassmembernames # apk 包内所有 class 的内部结构 -dump class_files.txt # 未混淆的类和成员 -printseeds seeds_txt # 列出从apk中删除的代码 -printusage unused.txt # 混淆前后的映射 -printmapping mapping.txt -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.BackupAgent -keep public class * extends android.preference.Preference -keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.app.Fragment -keep public class * extends android.view.view -keep public class com.android.vending.licensing.ILicensingService -keep public class * extends android.support.v4.**{ ; ; } -keep public class * extends android.support.v7.** -keep public class * extends android.support.annotation.** -keepattributes *Annotation* -keepattributes *JavascriptInterface* -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } -keep class * implements java.io.Serializable { public *; } -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(); } -keep class com.google.gson.** {*;} -keep class sun.misc.Unsafe {*;} -keep class com.google.gson.stream.** {*;} -keep class com.google.gson.examples.android.model.** {*;} -keep class com.google.** { ; ; } #保持自定义控件类不被混淆 -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } #保持自定义控件类不被混淆 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keep public class * extends android.view.View { public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); public void set*(...); } #butterknife -keep class butterknife.** { *; } -dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; } -keep class **$$ViewIjector { *; } -keepclasseswithmembernames class * { @butterknife.* ; } -keepclasseswithmembernames class * { @butterknife.* ; } #butterknife #iot-check -keep class com.bgy.iot.** { *; } -keep class io.netty.** { *; } #iot-check #打印机的 -keep class com.printsdk.**{*;} -keep class android.net.http.SslError -keep class android.webkit.**{*;} -keep class cn.sharesdk.**{*;} -keep class com.sina.**{*;} -keep class m.framework.**{*;} -keep class **.R$* {*;} -keep class **.R{*;} -dontwarn cn.sharesdk.** -dontwarn **.R$* -keep class * extends com.bgy.autosale.base.ui.BaseFragment -keep class * extends com.bgy.autosale.base.ui.BaseAutoExitFragment -keep class * extends com.bgy.autosale.base.ui.BaseActivity -keep class * implements com.bgy.autosale.interfaces.FlavorInterface { public *; } ### greenDAO 3 -keep class org.greenrobot.greendao.**{*;} -keep public class * extends org.greenrobot.greendao.AbstractDao -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao { public static java.lang.String TABLENAME; public *; } -keep class **$Properties -keepclassmembers class **$Properties {*;} # 如果类中有使用了注解的字段,则不混淆类和类成员 -keepclasseswithmembers class * { @com.bgy.autosale.socket.base.ServerMethod ; } # 如果类中有使用了注解的字段,则不混淆类和类成员 -keepclasseswithmembers class * { @com.bgy.autosale.socket.base.ServerApi ; } # 如果类中有使用了注解的字段,则不混淆类和类成员 -keepclasseswithmembers class * { @com.bgy.plc.proxys.base.ProxyMethod ; } # 如果类中有使用了注解的字段,则不混淆类和类成员 -keepclasseswithmembers class * { @com.bgy.plc.proxys.base.ProxySendApi ; } #个推 -dontwarn com.igexin.** -keep class com.igexin.** { *; } -keep class org.json.** { *; }