# This is a configuration file for ProGuard.
|
# http://proguard.sourceforge.net/index.html#manual/usage.html
|
#
|
# This file is no longer maintained and is not used by new (2.2+) versions of the
|
# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
|
# default rules at build time and stores them in the build directory.
|
|
-dontusemixedcaseclassnames #混淆时不会产生形形色色的类名
|
-dontskipnonpubliclibraryclasses #指定不去忽略非公共类库
|
-verbose #输出生成信息
|
|
# Optimization is turned off by default. Dex does not like code run
|
# through the ProGuard optimize and preverify steps (and performs some
|
# of these optimizations on its own).
|
#-dontoptimize #不优化指定文件
|
-dontpreverify #不预校验
|
# Note that if you want to enable optimization, you cannot just
|
# include optimization flags in your own project configuration file;
|
# instead you will need to point to the
|
# "proguard-android-optimize.txt" file instead of this one from your
|
# project.properties file.
|
|
-keepattributes *Annotation*
|
-keep public class com.google.vending.licensing.ILicensingService
|
-keep public class com.android.vending.licensing.ILicensingService
|
|
|
|
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
|
-keepclasseswithmembernames class * {
|
native <methods>;
|
}
|
|
# keep setters in Views so that animations can still work.
|
# see http://proguard.sourceforge.net/manual/examples.html#beans
|
-keepclassmembers public class * extends android.view.View {
|
void set*(***);
|
*** get*();
|
}
|
|
# We want to keep methods in Activity that could be used in the XML attribute onClick
|
-keepclassmembers class * extends android.app.Activity {
|
public void *(android.view.View);
|
}
|
|
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
|
-keepclassmembers enum * {
|
public static **[] values();
|
public static ** valueOf(java.lang.String);
|
}
|
|
-keepclassmembers class * implements android.os.Parcelable {
|
public static final android.os.Parcelable$Creator CREATOR;
|
}
|
|
-keepclassmembers class **.R$* {
|
public static <fields>;
|
}
|
|
# The support library contains references to newer platform versions.
|
# Don't warn about those in case this app is linking against an older
|
# platform version. We know about them, and they are safe.
|
-dontwarn androidx.**
|
|
# Understand the @Keep support annotation.
|
-keep class androidx.annotation.Keep
|
|
-keep @androidx.annotation.Keep class * {*;}
|
|
-keepclasseswithmembers class * {
|
@androidx.annotation.Keep <methods>;
|
}
|
|
-keepclasseswithmembers class * {
|
@androidx.annotation.Keep <fields>;
|
}
|
|
-keepclasseswithmembers class * {
|
@androidx.annotation.Keep <init>(...);
|
}
|
|
-dontwarn com.github.promeg.pinyinhelper.Pinyin
|
|
# 保留Serializable序列化的类不被混淆
|
-keep public class * implements java.io.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();
|
}
|
|
# 保留androidx下的所有类及其内部类
|
-keep class androidx.** {*;}
|
-keep public class * extends androidx.**
|
-keep interface androidx.** {*;}
|
-keep class com.google.android.material.** {*;}
|
-dontwarn androidx.**
|
-dontwarn com.google.android.material.**
|
-dontnote com.google.android.material.**
|
|
-keepclasseswithmembers class * {
|
public <init>(android.content.Context, android.util.AttributeSet);
|
public <init>(android.content.Context, android.util.AttributeSet, int);
|
}
|
|
# 回调函数事件不能混淆
|
-keepclassmembers class * {
|
void *(**On*Event);
|
void *(**On*Listener);
|
}
|
|
|
# Webview 相关不混淆
|
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
public *;
|
}
|
-keepclassmembers class * extends android.webkit.WebViewClient {
|
public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
|
public boolean *(android.webkit.WebView, java.lang.String);
|
}
|
-keepclassmembers class * extends android.webkit.WebViewClient {
|
public void *(android.webkit.WebView, java.lang.String);
|
}
|
|
# 使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
|
-keepclassmembers class * {
|
public <init>(org.json.JSONObject);
|
}
|
|
|
#kotlin 相关
|
-dontwarn kotlin.**
|
-keep class kotlin.** { *; }
|
-keep interface kotlin.** { *; }
|
-keepclassmembers class kotlin.Metadata {
|
public <methods>;
|
}
|
-keepclasseswithmembers @kotlin.Metadata class * { *; }
|
-keepclassmembers class **.WhenMappings {
|
<fields>;
|
}
|
-assumenosideeffects class kotlin.jvm.internal.Intrinsics {
|
static void checkParameterIsNotNull(java.lang.Object, java.lang.String);
|
}
|
|
-keep class kotlinx.** { *; }
|
-keep interface kotlinx.** { *; }
|
-dontwarn kotlinx.**
|
-dontnote kotlinx.serialization.SerializationKt
|
|
-keep class org.jetbrains.** { *; }
|
-keep interface org.jetbrains.** { *; }
|
-dontwarn org.jetbrains.**
|
|
|
# 避免混淆泛型
|
-keepattributes Signature
|
-keepattributes Exceptions
|
|
#bugly
|
-dontwarn com.tencent.bugly.**
|
-keep public class com.tencent.bugly.**{*;}
|
|
#okhttp
|
-dontwarn okhttp3.**
|
-keep class okhttp3.**{*;}
|
|
#okio
|
-dontwarn okio.**
|
-keep class okio.**{*;}
|
|
|
#retrofit
|
-dontwarn retrofit2.**
|
-keep class retrofit2.**{*;}
|
|
-keepclassmembernames,allowobfuscation interface * {
|
@retrofit2.http.* <methods>;
|
}
|
|
|
|
# ==================glide start===================
|
-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 *;
|
}
|
#glide如果你的API级别<=Android API 27 则需要添加
|
-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder
|
# for DexGuard only
|
#-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
|
# ==================glide end=====================
|
|
|
-keep class com.google.gson.reflect.TypeToken
|
-keep class * extends com.google.gson.reflect.TypeToken
|
-keep public class * implements java.lang.reflect.Type
|
|
#oss
|
-keep class com.alibaba.sdk.android.oss.** { *; }
|
-dontwarn org.apache.commons.codec.binary.**
|
|
#城市选择
|
-keep class com.lljjcoder.**{
|
*;
|
}
|
|
# 高德地图 SDK
|
-keep class com.amap.api.** {*;}
|
-keep class com.autonavi.** {*;}
|
-keep class com.amap.location.** {*;}
|
-dontwarn com.amap.**
|
-dontwarn com.autonavi.**
|
|
# 忽略高德地图 SDK 的可选依赖类
|
-dontwarn com.amap.ams.gnss.GnssSoftLocator
|
-dontwarn net.jafama.FastMath
|
#PictureSelector
|
-keep class com.luck.picture.lib.** { *; }
|
#如果引入了Camerax库请添加混淆
|
-keep class com.luck.lib.camerax.** { *; }
|
#如果引入了Ucrop库请添加混淆
|
-dontwarn com.yalantis.ucrop**
|
-keep class com.yalantis.ucrop** { *; }
|
-keep interface com.yalantis.ucrop** { *; }
|