# 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 
 | 
-keepattributes SourceFile,LineNumberTable 
 | 
-keepattributes Exceptions, Signature, InnerClasses 
 | 
-keepclasseswithmembernames class * { # 保持native方法不被混淆 
 | 
    native <methods>; 
 | 
} 
 | 
-keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 
 | 
    public static final Android.os.Parcelable$Creator *; 
 | 
} 
 | 
-keepclassmembers enum * { 
 | 
    public static **[] values(); 
 | 
    public static ** valueOf(java.lang.String); 
 | 
} 
 | 
-keepattributes *Annotation*        #保持注解 
 | 
#---------------------------------默认保留区--------------------------------- 
 | 
-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 
 | 
-keep class android.support.** {*;} 
 | 
  
 | 
-keepclasseswithmembernames class * { 
 | 
    native <methods>; 
 | 
} 
 | 
-keepclassmembers class * extends android.app.Activity{ 
 | 
    public void *(android.view.View); 
 | 
} 
 | 
-keepclassmembers enum * { 
 | 
    public static **[] values(); 
 | 
    public static ** valueOf(java.lang.String); 
 | 
} 
 | 
-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); 
 | 
} 
 | 
-keep class * implements android.os.Parcelable { 
 | 
  public static final android.os.Parcelable$Creator *; 
 | 
} 
 | 
-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(); 
 | 
} 
 | 
-keep class **.R$* { 
 | 
 *; 
 | 
} 
 | 
-keepclassmembers class * { 
 | 
    void *(**On*Event); 
 | 
} 
 | 
# 移除日志语句 
 | 
-assumenosideeffects class android.util.Log { 
 | 
    public static *** d(...); 
 | 
#    public static *** v(...); 
 | 
#    public static *** i(...); 
 | 
#    public static *** w(...); 
 | 
#    public static *** e(...); 
 | 
} 
 | 
#---------------------------------------------------------------------------- 
 | 
-keep public class * extends android.view.View { 
 | 
} 
 | 
-keep class **.R$* {*;} 
 | 
  
 | 
#okhttp 
 | 
-dontwarn okhttp3.** 
 | 
-keep class okhttp3.**{*;} 
 | 
-keep interface okhttp3.**{*;} 
 | 
  
 | 
#rxjava 
 | 
-keep public class io.reactivex.android.**{*;} 
 | 
-keep public class io.reactivex.**{*;} 
 | 
-keep public class rx.android.**{*;} 
 | 
-keep public class rx.**{*;} 
 | 
-keep public class javax.annotation.**{*;} 
 | 
-keep public class javax.inject.**{*;} 
 | 
-keep class com.google.gson.** { *; } 
 | 
#glide 
 | 
-keep public class com.bumptech.glide.**{*;} 
 | 
-keep public class com.luck.picture.lib.**{*;} 
 | 
-keep public class androidx.**{*;} 
 | 
  
 | 
-keep public class com.bumptech.**{*;} 
 | 
-keep public class com.scwang.**{*;} 
 | 
-keep public class kotlin.**{*;} 
 | 
-keep public class retrofit2.**{*;} 
 | 
-keep public class okio.**{*;} 
 | 
-keep public class com.google.**{*;} 
 | 
  
 | 
  
 | 
# 若Android API 高于27添加以下(不需要/): 
 | 
  
 | 
-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder 
 | 
# for DexGuard only 
 | 
#-keep resource xmlelements manifest/application/meta-data@value=GlideModule 
 | 
-keep class com.xuexiang.xupdate.entity.** { *; } 
 | 
  
 | 
# Note: if you use a custom API parser for parsing, you need to add confusion to your custom API entities. Here are the custom API entity obfuscation rules configured in this demo: 
 | 
-keep class com.xuexiang.xupdatedemo.entity.** { *; } 
 | 
  
 | 
-keep class com.hjq.permissions.** {*;} 
 | 
  
 | 
#腾讯相关 
 | 
-keep class com.qq.** {*;} 
 | 
-keep class com.tencent.** {*;} 
 | 
#权限申请 
 | 
-keep class com.hjq.** {*;} 
 | 
#列表相关 
 | 
-keep class com.scwang.** {*;} 
 | 
#其他 
 | 
-keep class com.contrarywind.** {*;} 
 | 
-keep class com.bigkoo.** {*;} 
 | 
-keep class org.** {*;} 
 | 
#当前模块 
 | 
-keep class com.dayu.qiheonlinelibrary.view.** {*;} 
 | 
-keep class com.dayu.qiheonlinelibrary.activity.** {*;} 
 | 
-keep class com.dayu.qiheonlinelibrary.card.** {*;} 
 | 
-keep class com.dayu.qiheonlinelibrary.dbBean.** {*;} 
 |