358 lines
12 KiB
Prolog
358 lines
12 KiB
Prolog
# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
|
||
-optimizationpasses 5
|
||
# 混合时不使用大小写混合,混合后的类名为小写
|
||
-dontusemixedcaseclassnames
|
||
# 指定不去忽略非公共库的类
|
||
-dontskipnonpubliclibraryclasses
|
||
# 这句话能够使我们的项目混淆后产生映射文件
|
||
# 包含有类名->混淆后类名的映射关系
|
||
-verbose
|
||
# 指定不去忽略非公共库的类成员
|
||
-dontskipnonpubliclibraryclassmembers
|
||
# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
|
||
-dontpreverify
|
||
# 保留Annotation不混淆
|
||
-keepattributes *Annotation*,InnerClasses
|
||
# 避免混淆泛型
|
||
-keepattributes Signature
|
||
# 抛出异常时保留代码行号
|
||
-keepattributes SourceFile,LineNumberTable
|
||
# 指定混淆是采用的算法,后面的参数是一个过滤器
|
||
# 这个过滤器是谷歌推荐的算法,一般不做更改
|
||
-optimizations !code/simplification/cast,!field/*,!class/merging/*
|
||
|
||
#############################################
|
||
#
|
||
# Android开发中一些需要保留的公共部分
|
||
#
|
||
#############################################
|
||
|
||
# 保留我们使用的四大组件,自定义的Application等等这些类不被混淆
|
||
# 因为这些子类都有可能被外部调用
|
||
-keep public class * extends android.app.Activity
|
||
-keep public class * extends android.app.Appliction
|
||
-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.** {*;}
|
||
#kotlin
|
||
-keep class kotlin.** { *; }
|
||
-keep class kotlin.Metadata { *; }
|
||
-dontwarn kotlin.**
|
||
-keepclassmembers class **$WhenMappings {
|
||
<fields>;
|
||
}
|
||
-keepclassmembers class kotlin.Metadata {
|
||
public <methods>;
|
||
}
|
||
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
|
||
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
|
||
}
|
||
|
||
# 保留继承的
|
||
-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.** {*;}
|
||
-keep class androidx.** {*;}
|
||
-keep public class * extends androidx.**
|
||
-keep interface androidx.** {*;}
|
||
-dontwarn com.google.android.material.**
|
||
-dontnote com.google.android.material.**
|
||
-dontwarn androidx.**
|
||
|
||
|
||
# 保留R下面的资源
|
||
-keep class **.R$* {*;}
|
||
|
||
# 保留本地native方法不被混淆
|
||
-keepclasseswithmembernames class * {
|
||
native <methods>;
|
||
}
|
||
|
||
# 保留binding方法不被混淆
|
||
-keepclassmembers class ** implements androidx.viewbinding.ViewBinding {
|
||
public static ** bind(***);
|
||
public static ** inflate(***);
|
||
}
|
||
|
||
# 保留在Activity中的方法参数是view的方法,
|
||
# 这样以来我们在layout中写的onClick就不会被影响
|
||
-keepclassmembers class * extends android.app.Activity{
|
||
public void *(android.view.View);
|
||
}
|
||
|
||
# 保留我们自定义控件(继承自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);
|
||
}
|
||
|
||
# 保留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();
|
||
}
|
||
|
||
-keep public class * implements java.io.Serializable {*;}
|
||
|
||
# 不混淆实体类
|
||
-keep class com.cheng.blzb.bean.** { *; }
|
||
-keep class com.cheng.blzb.bean.db.** { *; }
|
||
-keep class com.cheng.blzb.net.model.** { *; }
|
||
|
||
# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
|
||
-keepclassmembers class * {
|
||
void *(**On*Event);
|
||
void *(**On*Listener);
|
||
}
|
||
|
||
# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
|
||
# 记得proguard-android.txt中一定不要加-dontoptimize才起作用
|
||
# 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
|
||
-assumenosideeffects class android.util.Log {
|
||
public static int v(...);
|
||
public static int i(...);
|
||
public static int w(...);
|
||
public static int d(...);
|
||
public static int e(...);
|
||
}
|
||
|
||
# fastJson
|
||
-dontwarn com.alibaba.fastjson.**
|
||
-keep class com.alibaba.fastjson.** { *; }
|
||
-keepattributes *Annotation*
|
||
|
||
# gson
|
||
-keep class com.google.gson.reflect.TypeToken { *; }
|
||
-keep class * extends com.google.gson.reflect.TypeToken
|
||
-keepattributes AnnotationDefault,RuntimeVisibleAnnotations
|
||
|
||
# 保留Gson核心类和方法,防止它们被混淆
|
||
-dontwarn sun.misc.**
|
||
-keep class com.google.gson.** { *; }
|
||
-keep class com.google.gson.examples.android.model.** { <fields>; }
|
||
-keep class * implements com.google.gson.TypeAdapterFactory
|
||
-keep class * implements com.google.gson.JsonSerializer
|
||
-keep class * implements com.google.gson.JsonDeserializer
|
||
|
||
|
||
# 保持Gson序列化和反序列化所需的注解不被混淆
|
||
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
|
||
|
||
-keepclassmembernames class * {
|
||
@com.google.gson.annotations.SerializedName <fields>;
|
||
}
|
||
|
||
# 保持枚举类型的序列化兼容性
|
||
-keepclassmembers enum * {
|
||
public static **[] values();
|
||
public static ** valueOf(java.lang.String);
|
||
}
|
||
|
||
# 防止R8或ProGuard移除未使用的元素(如果这些元素是通过反射访问的,比如Gson)
|
||
-keep class * {
|
||
@com.google.gson.annotations.SerializedName *;
|
||
}
|
||
-keepclassmembers class com.example.base.extensions.GsonExtensionsKt {
|
||
<methods>;
|
||
}
|
||
|
||
-keepclassmembers,allowobfuscation class * {
|
||
@com.google.gson.annotations.SerializedName <fields>;
|
||
}
|
||
|
||
# Glide
|
||
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
|
||
**[] $VALUES;
|
||
public *;
|
||
}
|
||
|
||
# OkHttp3
|
||
-dontwarn com.squareup.okhttp3.**
|
||
-keep class com.squareup.okhttp3.** { *;}
|
||
-dontwarn okio.**
|
||
|
||
# Okio
|
||
-dontwarn com.squareup.**
|
||
-dontwarn okio.**
|
||
-keep public class org.codehaus.* { *; }
|
||
-keep public class java.nio.* { *; }
|
||
|
||
# Retrofit
|
||
-dontwarn retrofit2.**
|
||
-keep class retrofit2.** { *; }
|
||
-keepattributes Signature
|
||
-keepattributes Exceptions
|
||
|
||
# liveDataBus
|
||
-dontwarn com.jeremyliao.liveeventbus.**
|
||
-keep class com.jeremyliao.liveeventbus.** { *; }
|
||
-keep class androidx.lifecycle.** { *; }
|
||
-keep class androidx.arch.core.** { *; }
|
||
|
||
# 微信
|
||
-keep class com.tencent.mm.opensdk.** { *; }
|
||
-keep class com.tencent.wxop.** { *; }
|
||
-keep class com.tencent.mm.sdk.** { *; }
|
||
|
||
# 支付宝
|
||
-libraryjars libs/alipaysdk-15.8.03.210428205839.aar
|
||
-keep class com.alipay.android.app.IAlixPay{*;}
|
||
-keep class com.alipay.android.app.IAlixPay$Stub{*;}
|
||
-keep class com.alipay.android.app.IRemoteServiceCallback{*;}
|
||
-keep class com.alipay.android.app.IRemoteServiceCallback$Stub{*;}
|
||
-keep class com.alipay.sdk.app.PayTask{ public *;}
|
||
-keep class com.alipay.sdk.app.AuthTask{ public *;}
|
||
|
||
# 友盟
|
||
-keep class com.umeng.** {*;}
|
||
-keep class org.repackage.** {*;}
|
||
|
||
-keepclassmembers class * {
|
||
public <init> (org.json.JSONObject);
|
||
}
|
||
|
||
-keep public class com.chat.assistant.ai.R$*{
|
||
public static final int *;
|
||
}
|
||
|
||
#加载动画
|
||
-keep class com.wang.avi.** { *; }
|
||
-keep class com.wang.avi.indicators.** { *; }
|
||
|
||
#oss
|
||
-keep class com.alibaba.sdk.android.oss.** { *; }
|
||
-dontwarn okio.**
|
||
-dontwarn org.apache.commons.codec.binary.**
|
||
-keep class com.alibaba.idst.nui.*{*;}
|
||
|
||
##高德
|
||
#定位
|
||
-keep class com.amap.api.location.**{*;}
|
||
-keep class com.amap.api.fence.**{*;}
|
||
-keep class com.loc.**{*;}
|
||
-keep class com.autonavi.aps.amapapi.model.**{*;}
|
||
#地图
|
||
-keep class com.amap.api.maps.**{*;}
|
||
-keep class com.autonavi.**{*;}
|
||
-keep class com.amap.api.trace.**{*;}
|
||
#2D地图
|
||
-keep class com.amap.api.maps2d.**{*;}
|
||
-keep class com.amap.api.mapcore2d.**{*;}
|
||
#搜索
|
||
-keep class com.amap.api.services.**{*;}
|
||
|
||
#room
|
||
-keep class androidx.room.** { *; }
|
||
-keepclassmembers class * {
|
||
@androidx.room.* <methods>;
|
||
@androidx.room.* <fields>;
|
||
}
|
||
|
||
-keep interface com.cheng.blzb.manager.db.* { *; }
|
||
-keepclassmembers class * extends androidx.room.RoomDatabase {
|
||
public <init>(...);
|
||
}
|
||
|
||
-keep class com.hjq.permissions.** {*;}
|
||
|
||
-keep class org.libpag.** {*;}
|
||
-keep class androidx.exifinterface.** {*;}
|
||
|
||
-dontwarn io.microshow.rxffmpeg.**
|
||
-keep class io.microshow.rxffmpeg.**{*;}
|
||
|
||
# 华为推送
|
||
-ignorewarnings
|
||
-keepattributes *Annotation*
|
||
-keepattributes Exceptions
|
||
-keepattributes InnerClasses
|
||
-keepattributes Signature
|
||
-keepattributes SourceFile,LineNumberTable
|
||
-keep class com.huawei.hianalytics.**{*;}
|
||
-keep class com.huawei.updatesdk.**{*;}
|
||
-keep class com.huawei.hms.**{*;}
|
||
|
||
#腾讯语音识别
|
||
-keepclasseswithmembernames class * {
|
||
native <methods>;
|
||
}
|
||
-keep public class com.tencent.cloud.qcloudasrsdk.*
|
||
|
||
-dontwarn com.bun.miitmdid.interfaces.IIdentifierListener
|
||
-dontwarn com.download.library.DownloadTask$DownloadTaskStatus
|
||
-dontwarn com.google.j2objc.annotations.Weak
|
||
-dontwarn com.oracle.svm.core.annotate.Delete
|
||
-dontwarn com.oracle.svm.core.annotate.TargetClass
|
||
-dontwarn com.sun.tools.javac.code.Attribute$UnresolvedClass
|
||
-dontwarn com.sun.tools.javac.code.Type$ClassType
|
||
-dontwarn javax.lang.model.SourceVersion
|
||
-dontwarn javax.lang.model.element.AnnotationMirror
|
||
-dontwarn javax.lang.model.element.AnnotationValue
|
||
-dontwarn javax.lang.model.element.AnnotationValueVisitor
|
||
-dontwarn javax.lang.model.element.Element
|
||
-dontwarn javax.lang.model.element.ElementKind
|
||
-dontwarn javax.lang.model.element.ExecutableElement
|
||
-dontwarn javax.lang.model.element.Modifier
|
||
-dontwarn javax.lang.model.element.Name
|
||
-dontwarn javax.lang.model.element.NestingKind
|
||
-dontwarn javax.lang.model.element.PackageElement
|
||
-dontwarn javax.lang.model.element.TypeElement
|
||
-dontwarn javax.lang.model.element.TypeParameterElement
|
||
-dontwarn javax.lang.model.element.VariableElement
|
||
-dontwarn javax.lang.model.type.DeclaredType
|
||
-dontwarn javax.lang.model.type.TypeKind
|
||
-dontwarn javax.lang.model.type.TypeMirror
|
||
-dontwarn javax.lang.model.type.TypeVariable
|
||
-dontwarn javax.lang.model.type.TypeVisitor
|
||
-dontwarn javax.lang.model.util.Elements
|
||
-dontwarn javax.lang.model.util.SimpleAnnotationValueVisitor7
|
||
-dontwarn javax.lang.model.util.SimpleTypeVisitor7
|
||
-dontwarn javax.lang.model.util.Types
|
||
-dontwarn org.bouncycastle.asn1.gm.GMNamedCurves
|
||
-dontwarn org.bouncycastle.asn1.x9.X9ECParameters
|
||
-dontwarn org.bouncycastle.crypto.digests.SM3Digest
|
||
-dontwarn org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey
|
||
-dontwarn org.bouncycastle.jce.provider.BouncyCastleProvider
|
||
-dontwarn org.bouncycastle.jce.spec.ECParameterSpec
|
||
-dontwarn org.bouncycastle.jce.spec.ECPublicKeySpec
|
||
-dontwarn org.bouncycastle.jsse.BCSSLParameters
|
||
-dontwarn org.bouncycastle.jsse.BCSSLSocket
|
||
-dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
|
||
-dontwarn org.bouncycastle.math.ec.ECCurve
|
||
-dontwarn org.bouncycastle.math.ec.ECPoint
|
||
-dontwarn org.bouncycastle.util.encoders.Hex
|
||
-dontwarn org.conscrypt.Conscrypt$Version
|
||
-dontwarn org.conscrypt.Conscrypt
|
||
-dontwarn org.openjsse.javax.net.ssl.SSLParameters
|
||
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
|
||
-dontwarn org.openjsse.net.ssl.OpenJSSE
|
||
-dontwarn com.efs.sdk.base.core.config.GlobalInfo
|
||
-dontwarn com.efs.sdk.base.core.config.GlobalInfoManager
|
||
-dontwarn coil.compose.EqualityDelegate
|
||
-dontwarn coil.compose.SingletonAsyncImageKt
|
||
-dontwarn android.os.SystemProperties |