| # 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); | 
| } | 
| #---------------------------------------------------------------------------- | 
|   | 
| -keep   class com.amap.api.maps.**{*;} | 
| -keep   class com.autonavi.**{*;} | 
| -keep   class com.amap.api.trace.**{*;} | 
| -keep class com.amap.api.location.**{*;} | 
| -keep class com.amap.api.fence.**{*;} | 
| -keep class com.autonavi.aps.amapapi.model.**{*;} | 
| -keep   class com.amap.api.services.**{*;} | 
| -keep class com.amap.api.maps2d.**{*;} | 
| -keep class com.amap.api.mapcore2d.**{*;} | 
| -keep class com.amap.api.navi.**{*;} | 
| -keep class com.autonavi.**{*;} | 
|   | 
|   | 
| -keep public class * implements com.bumptech.glide.module.GlideModule | 
| -keep public class * extends com.bumptech.glide.module.AppGlideModule | 
| -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { | 
|   **[] $VALUES; | 
|   public *; | 
| } | 
|   | 
| -keep public class com.zuo.nfcproject.yanzhou.bean.** {*;} | 
| -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.zuo.nfcproject.yanzhou.net.**{*;} | 
|   | 
| # 若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.luck.picture.lib.** { *; } | 
| -keep class com.luck.lib.camerax.** { *; } | 
| -dontwarn com.yalantis.ucrop** | 
| -keep class com.yalantis.ucrop** { *; } | 
| -keep interface com.yalantis.ucrop** { *; } | 
| -keep class com.luck.picture.lib.** { *; } | 
| -keep class com.luck.lib.camerax.** { *; } | 
| -dontwarn com.yalantis.ucrop** | 
| -keep class com.yalantis.ucrop** { *; } | 
| -keep interface com.yalantis.ucrop** { *; } |