# 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.


#    不混淆，获取oaid源码
    -keep class com.flayone.oaid.**{*;}
#     不混淆下载
-keeppackagenames com.mercury.sdk.**
#    -keep class com.mercury.sdk.downloads.** {*;}
#    -keep class com.mercury.sdk.**{
#          public protected *;
#    }

#四大组件和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


#保留native方法
-keepclasseswithmembernames class * {
   native <methods>;
}

#保留异常，内部类/接口，泛型，Deprecated不推荐的方法
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,EnclosingMethod

#保留枚举
-keepclassmembers enum * {
   public static **[] values();
   public static ** valueOf(java.lang.String);
}
#保留实现了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;
   private void writeObject(java.io.ObjectOutputStream);
   private void readObject(java.io.ObjectInputStream);
   java.lang.Object writeReplace();
   java.lang.Object readResolve();
}