248 lines
8.0 KiB
Prolog
248 lines
8.0 KiB
Prolog
# 代码混淆压缩比,在0~7之间
|
||
-optimizationpasses 5
|
||
# 混合时不使用大小写混合,混合后的类名为小写
|
||
-dontusemixedcaseclassnames
|
||
# 指定不去忽略非公共库的类
|
||
-dontskipnonpubliclibraryclasses
|
||
# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
|
||
-dontpreverify
|
||
-dontoptimize
|
||
-verbose
|
||
# 避免混淆泛型
|
||
-keepattributes Signature
|
||
|
||
# 保留Annotation不混淆
|
||
-keepattributes *Annotation*,InnerClasses
|
||
#google推荐算法
|
||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||
# 避免混淆Annotation、内部类、泛型、匿名类
|
||
-keepattributes *Annotation*,InnerClasses,Signature,EnclosingMethod
|
||
# 重命名抛出异常时的文件名称
|
||
# -renamesourcefileattribute SourceFile
|
||
# 抛出异常时保留代码行号
|
||
-keepattributes SourceFile,LineNumberTable
|
||
# 处理support包
|
||
-dontnote android.support.**
|
||
-dontwarn android.support.**
|
||
# 保留继承的
|
||
-keep public class * extends android.support.v4.**
|
||
-keep public class * extends android.support.v7.**
|
||
-keep public class * extends android.support.annotation.**
|
||
|
||
# 处理AndroidX
|
||
-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.**
|
||
|
||
-keepclasseswithmembernames class * {
|
||
public <init>(android.content.Context, android.util.AttributeSet);
|
||
}
|
||
|
||
-keepclasseswithmembernames class * {
|
||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||
}
|
||
|
||
# 保持自定义控件类不被混淆,指定格式的构造方法不去混淆
|
||
-keepclasseswithmembers class * {
|
||
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 android.view.View {
|
||
public <init>(android.content.Context);
|
||
public <init>(android.content.Context, android.util.AttributeSet);
|
||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||
public void set*(...);
|
||
*** get*();
|
||
}
|
||
|
||
# 保留R下面的资源
|
||
-keep class **.R$* {*;}
|
||
# 保留四大组件,自定义的Application等这些类不被混淆
|
||
-keep public class * extends android.app.Fragment
|
||
-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.preference.Preference
|
||
-keep public class com.android.vending.licensing.ILicensingService
|
||
|
||
# 保留在Activity中的方法参数是view的方法,
|
||
# 这样以来我们在layout中写的onClick就不会被影响
|
||
-keepclassmembers class * extends android.app.Activity{
|
||
public void *(android.view.View);
|
||
}
|
||
# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
|
||
-keepclassmembers class * {
|
||
void *(**On*Event);
|
||
void *(**On*Listener);
|
||
}
|
||
# 保留本地native方法不被混淆
|
||
-keepclasseswithmembernames class * {
|
||
native <methods>;
|
||
}
|
||
|
||
# 保留枚举类不被混淆
|
||
-keepclassmembers enum * {
|
||
public static **[] values();
|
||
public static ** valueOf(java.lang.String);
|
||
}
|
||
|
||
# 保留Parcelable序列化类不被混淆
|
||
-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();
|
||
}
|
||
#assume no side effects:删除android.util.Log输出的日志
|
||
-assumenosideeffects class android.util.Log {
|
||
public static *** v(...);
|
||
public static *** d(...);
|
||
public static *** i(...);
|
||
public static *** w(...);
|
||
public static *** e(...);
|
||
}
|
||
#保留Keep注解的类名和方法
|
||
-keep,allowobfuscation @interface android.support.annotation.Keep
|
||
-keep @android.support.annotation.Keep class *
|
||
-keepclassmembers class * {
|
||
@android.support.annotation.Keep *;
|
||
}
|
||
|
||
# WebView
|
||
-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, jav.lang.String);
|
||
}
|
||
|
||
# Retain generic type information for use by reflection by converters and adapters.
|
||
-keepattributes Signature
|
||
|
||
# Retain service method parameters when optimizing.
|
||
-keepclassmembers,allowshrinking,allowobfuscation interface * {
|
||
@retrofit2.http.* <methods>;
|
||
}
|
||
|
||
# Platform calls Class.forName on types which do not exist on Android to determine platform.
|
||
-dontnote retrofit2.Platform
|
||
# Platform used when running on RoboVM on iOS. Will not be used at runtime.
|
||
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
|
||
# Platform used when running on Java 8 VMs. Will not be used at runtime.
|
||
-dontwarn retrofit2.Platform$Java8
|
||
# Retain generic type information for use by reflection by converters and adapters.
|
||
-keepattributes Signature
|
||
# Retain declared checked exceptions for use by a Proxy instance.
|
||
-keepattributes Exceptions
|
||
|
||
# Ignore annotation used for build tooling.
|
||
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
||
|
||
# Ignore JSR 305 annotations for embedding nullability information.
|
||
-dontwarn javax.annotation.**
|
||
|
||
# JSR 305 annotations are for embedding nullability information.
|
||
-dontwarn javax.annotation.**
|
||
|
||
# A resource is loaded with a relative path so the package of this class must be preserved.
|
||
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
||
|
||
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
||
|
||
# OkHttp platform used only on JVM and when Conscrypt dependency is available.
|
||
-dontwarn okhttp3.internal.platform.ConscryptPlatform
|
||
|
||
-keep class cn.jzvd.*{*;}
|
||
|
||
-keep class com.gyf.immersionbar.* {*;}
|
||
-dontwarn com.gyf.immersionbar.**
|
||
|
||
-keep class com.huanchengfly.tieba.post.models.** { *; }
|
||
-keep class com.huanchengfly.tieba.api.models.** { *; }
|
||
|
||
-keep public class com.huanchengfly.tieba.post.utils.TiebaLiteJavaScript { *; }
|
||
|
||
-dontwarn com.yanzhenjie.permission.**
|
||
|
||
-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 *;
|
||
}
|
||
|
||
# Rhino
|
||
-keep class org.mozilla.javascript.** {*;}
|
||
-dontwarn org.mozilla.javascript.tools.**
|
||
|
||
# LitePal相关
|
||
-keep class org.litepal.** {
|
||
*;
|
||
}
|
||
|
||
-keep class * extends org.litepal.crud.DataSupport {
|
||
*;
|
||
}
|
||
|
||
-keep class * extends org.litepal.crud.LitePalSupport {
|
||
*;
|
||
}
|
||
|
||
-keep class * implements com.google.gson.JsonDeserializer {
|
||
*;
|
||
}
|
||
|
||
# Matisse
|
||
-dontwarn com.squareup.picasso.**
|
||
-dontwarn com.zhihu.matisse.**
|
||
-keep class com.zhihu.matisse.**{*;}
|
||
|
||
-keep class com.lijiankun24.** { *; }
|
||
|
||
# uCrop
|
||
-dontwarn com.yalantis.ucrop**
|
||
-keep class com.yalantis.ucrop** { *; }
|
||
-keep interface com.yalantis.ucrop** { *; }
|
||
|
||
# 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);
|
||
}
|
||
|
||
|
||
# OkHttp3
|
||
-dontwarn okhttp3.logging.**
|
||
-keep class okhttp3.internal.**{*;}
|
||
-dontwarn okio.**
|
||
|
||
# Retrofit
|
||
-dontwarn retrofit2.**
|
||
-keep class retrofit2.** { *; }
|
||
-keepattributes Signature
|
||
-keepattributes Exceptions |