############################################# # # 对于一些基本指令的添加 # ############################################# -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -printmapping proguardMapping.txt -optimizations !code/simplification/cast,!field/*,!class/merging/* -keepattributes *Annotation*,InnerClasses -keepattributes EnclosingMethod, InnerClasses -keepattributes *Annotation* -keepattributes Signature -keepattributes LineNumberTable -renamesourcefileattribute SourceFile # 重新包装所有重命名的包并放在给定的单一包中 -flattenpackagehierarchy androidx.base # 将包里的类混淆成n个再重新打包到一个统一的package中 会覆盖flattenpackagehierarchy选项 -repackageclasses androidx.base # 把混淆类中的方法名也混淆了 -useuniqueclassmembernames ############################################# # # Android开发中一些需要保留的公共部分 # ############################################# # 保留我们使用的四大组件,自定义的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.** -keep class com.google.android.material.** { *; } -dontwarn com.google.android.material.** -dontnote com.google.android.material.** -dontwarn androidx.** -keep class androidx.** { *; } -keep interface androidx.** { *; } #-keep public class * extends androidx.** -keep class org.xmlpull.v1.** {*;} # 保留R下面的资源 -keep class **.R$* {*;} # 保留本地native方法不被混淆 -keepclasseswithmembernames class * { native ; } # 保留在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 (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); } -keep public class * extends androidx.recyclerview.widget.RecyclerView$LayoutManager{ *** get*(); void set*(***); public (android.content.Context); public (android.content.Context, android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int); } -keep class com.orhanobut.hawk.** { *; } # 保留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 ; !private ; !private ; 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); void *(**On*Listener); } #xwalk -keep class org.xwalk.core.** { *; } -keep class org.crosswalk.engine.** { *; } -keep class org.chromium.** { *; } -dontwarn android.view.** -dontwarn android.media.** -dontwarn org.chromium.** #okhttp -dontwarn okhttp3.** -keep class okhttp3.**{*;} #okio -dontwarn okio.** -keep class okio.**{*;} #loadsir -dontwarn com.kingja.loadsir.** -keep class com.kingja.loadsir.** {*;} #gson # Gson specific classes -dontwarn sun.misc.** #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.google.gson.examples.android.model.** { ; } # Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory, # JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter) -keep class * extends com.google.gson.TypeAdapter -keep class * implements com.google.gson.TypeAdapterFactory -keep class * implements com.google.gson.JsonSerializer -keep class * implements com.google.gson.JsonDeserializer # Prevent R8 from leaving Data object members always null -keepclassmembers,allowobfuscation class * { @com.google.gson.annotations.SerializedName ; } #xstream -keep class com.thoughtworks.xstream.converters.extended.SubjectConverter { *; } -keep class com.thoughtworks.xstream.converters.extended.ThrowableConverter { *; } -keep class com.thoughtworks.xstream.converters.extended.StackTraceElementConverter { *; } -keep class com.thoughtworks.xstream.converters.extended.CurrencyConverter { *; } -keep class com.thoughtworks.xstream.converters.extended.RegexPatternConverter { *; } -keep class com.thoughtworks.xstream.converters.extended.CharsetConverter { *; } -keep class com.thoughtworks.xstream.** { *; } #eventbus -keepclassmembers class * { @org.greenrobot.eventbus.Subscribe ; } -keep enum org.greenrobot.eventbus.ThreadMode { *; } # And if you use AsyncExecutor: -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent { (java.lang.Throwable); } #bugly -dontwarn com.tencent.bugly.** -keep public class com.tencent.bugly.**{*;} -keep class android.support.**{*;} #dkplayer -keep class com.dueeeke.videoplayer.** { *; } -dontwarn com.dueeeke.videoplayer.** # IjkPlayer -keep class tv.danmaku.ijk.** { *; } -dontwarn tv.danmaku.ijk.** # ExoPlayer -keep class com.google.android.exoplayer2.** { *; } -dontwarn com.google.android.exoplayer2.** # 实体类 #-keep class com.github.tvbox.osc.bean.** { *; } #CardView -keep class com.github.tvbox.osc.ui.tv.widget.card.**{*;} #ViewObj -keep class com.github.tvbox.osc.ui.tv.widget.ViewObj{ ; } -keep class com.github.catvod.crawler.*{*;} # 迅雷下载模块 -keep class com.xunlei.downloadlib.** {*;} # quickjs引擎 -keep class com.github.tvbox.quickjs.** {*;} # 支持影视的ali相关的jar -keep class com.google.gson.**{*;} # Zxing -keep class com.google.zxing.**{*;} -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } # Cronet支持http3 -keep class com.google.net.cronet.**{*;} -keep class org.chromium.net.**{*;}