## Add project specific ProGuard rules here.
## By default, the flags in this file are appended to flags specified
## in D:\Android\sdk/tools/proguard/proguard-android.txt
## You can edit the include path and order by changing the proguardFiles
## directive in build.gradle.
#
#
################################
##
## 公共部分(固定不变)
##
################################
##1.基本指令区
## 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
#-optimizationpasses 5
## 混合时不使用大小写混合,混合后的类名为小写
#-dontusemixedcaseclassnames
## 指定不去忽略非公共库的类
#-dontskipnonpubliclibraryclasses
## 这句话能够使我们的项目混淆后产生映射文件
## 包含有类名->混淆后类名的映射关系
#-verbose
## 指定不去忽略非公共库的类成员
#-dontskipnonpubliclibraryclassmembers
## 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
#-dontpreverify
## 保留Annotation不混淆
#-keepattributes *Annotation*,InnerClasses
## 避免混淆泛型
#-keepattributes Signature
## 抛出异常时保留代码行号
#-keepattributes SourceFile,LineNumberTable
## 指定混淆是采用的算法,后面的参数是一个过滤器
## 这个过滤器是谷歌推荐的算法,一般不做更改
#-optimizations !code/simplification/cast,!field/*,!class/merging/*
#
##2.默认保留区
## 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
## 因为这些子类都有可能被外部调用
#-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
#-keep public class com.android.vending.licensing.ILicensingService
## 保留support下的所有类及其内部类
#-keep class android.support.** {*;}
## 保留继承的
#-keep public class * extends android.support.v4.**
#-keep public class * extends android.support.v7.**
#-keep public class * extends android.support.annotation.**
## 保留R下面的资源
#-keep class **.R$* {*;}
#
## 保留本地native方法不被混淆
#-keepclasseswithmembernames class * {
#    native <methods>;
#}
## 保留在Activity中的方法参数是view的方法,
## 这样以来我们在layout中写的onClick就不会被影响
#-keepclassmembers class * extends android.app.Activity{
#    public void *(android.view.View);
#}
## 保留枚举类不被混淆
#-keepclassmembers enum * {
#    public static **[] values();
#    public static ** valueOf(java.lang.String);
#}
## 保留我们自定义控件(继承自View)不被混淆
#-keep public class * extends android.view.View{
#    *** get*();
#    void set*(***);
#    public <init>(android.content.Context);
#    public <init>(android.content.Context, android.util.AttributeSet);
#    public <init>(android.content.Context, android.util.AttributeSet, int);
#}
#-keepclasseswithmembers class * {
#    public <init>(android.content.Context, android.util.AttributeSet);
#    public <init>(android.content.Context, android.util.AttributeSet, int);
#}
#
## 保留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 <fields>;
#    !private <fields>;
#    !private <methods>;
#    private void writeObject(java.io.ObjectOutputStream);
#    private void readObject(java.io.ObjectInputStream);
#    java.lang.Object writeReplace();
#    java.lang.Object readResolve();
#}
## 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
#-keepclassmembers class * {
#    void *(**On*Event);
#}
#
##3.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);
#}
#-keepclassmembers class * extends android.webkit.webViewClient {
#    public void *(android.webkit.webView, jav.lang.String);
#}
##移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
##这里可以作为禁止log打印的功能使用,另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
#-assumenosideeffects class android.util.Log {
#    public static *** v(...);
#    public static *** i(...);
#    public static *** d(...);
#    public static *** w(...);
#    public static *** e(...);
#}
#
#
################################
##
## 第三方jar包
##
################################
#-keep class com.uuzuche.lib_zxing.** {*;}
#-keep class cc.cloudist.acplibrary.** {*;}
#-keep class com.handmark.pulltorefresh.library.** {*;}
#-keep class android.arch.core.internal.** {*;}
#-keep class android.arch.lifecycle.** {*;}
#-keep class com.alibaba.fastjson.** {*;}
#-dontwarn com.alibaba.fastjson.**
#-keep class android.support.graphics.drawable.** {*;}
#-keep class com.facebook.stetho.** {*;}
#-keep class javax.annotation.** {*;}
#-keep class com.lidroid.xutils.** {*;}
#-keep class okhttp3.** {*;}
#-keep class okio.** {*;}
#-dontwarn okio.**
#-keep class org.apache.commons.cli.** {*;}
#-keep class org.junit.** {*;}
#-keep class junit.** {*;}
#-keep class org.hamcrest.** {*;}
#
#-keep class sun.misc.Unsafe {*;}
#-keep class com.google.gson.** {*;}
#-keep class com.google.gson.stream.** {*;}
#-keep class com.android.volley.** {*;}
#
#-keep class butterknife.** {*;}
#-dontwarn butterknife.internal.**
#-keep class **$$ViewBinder { *; }
#
################################
##
## 自己的代码
## 引用的其他Module可以直接在app的这个混淆文件里配置
##
################################
##实体类
#-keep class com.uas.yitao_newelectronic.bean.** {*;}
##-keep .** {*;}