|  |  |  | 
|---|
|  |  |  | # 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.** {*;} | 
|---|
|  |  |  |  | 
|---|
|  |  |  | -keep class androidx.room.** { *; } | 
|---|
|  |  |  | -keep @androidx.room.** class * | 
|---|
|  |  |  | -keep interface androidx.room.** { *; } | 
|---|
|  |  |  | -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.** {*;} | 
|---|