123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- #############################################
- #
- # 对于一些基本指令的添加
- #
- #############################################
- -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 <methods>;
- }
- # 保留在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 <init>(android.content.Context);
- public <init>(android.content.Context, android.util.AttributeSet);
- public <init>(android.content.Context, android.util.AttributeSet, int);
- }
- -keep public class * extends androidx.recyclerview.widget.RecyclerView$LayoutManager{
- *** 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);
- }
- -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 <fields>;
- !private <fields>;
- !private <methods>;
- 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.** { <fields>; }
- # 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 <fields>;
- }
- #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 <methods>;
- }
- -keep enum org.greenrobot.eventbus.ThreadMode { *; }
- # And if you use AsyncExecutor:
- -keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
- <init>(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{
- <methods>;
- }
- -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.**{*;}
|