280 lines
9.9 KiB
Prolog
280 lines
9.9 KiB
Prolog
# Add project specific ProGuard rules here.
|
|
# You can control the set of applied configuration files using the
|
|
# proguardFiles setting in build.gradle.
|
|
#
|
|
# For more details, see
|
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
|
|
# If your project uses WebView with JS, uncomment the following
|
|
# and specify the fully qualified class name to the JavaScript interface
|
|
# class:
|
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
# public *;
|
|
#}
|
|
|
|
# Uncomment this to preserve the line number information for
|
|
# debugging stack traces.
|
|
#-keepattributes SourceFile,LineNumberTable
|
|
|
|
# If you keep the line number information, uncomment this to
|
|
# hide the original source file name.
|
|
#-renamesourcefileattribute SourceFile
|
|
|
|
# 屏蔽警告
|
|
-ignorewarnings
|
|
|
|
# 指定代码的压缩级别
|
|
-optimizationpasses 5
|
|
|
|
# 不忽略库中的非public的类成员
|
|
-dontskipnonpubliclibraryclassmembers
|
|
|
|
# google推荐算法
|
|
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
|
|
|
# 避免混淆Annotation、内部类、泛型、匿名类
|
|
-keepattributes *Annotation*,InnerClasses,Signature,EnclosingMethod
|
|
|
|
# 抛出异常时保留代码行号
|
|
-keepattributes SourceFile,LineNumberTable
|
|
|
|
# 保持四大组件
|
|
-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 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);
|
|
}
|
|
|
|
# 保持所有实现 Serializable 接口的类成员
|
|
-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();
|
|
}
|
|
|
|
|
|
-keep class com.github.shadowsocks.net.http.entity.**{*;}
|
|
|
|
#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);
|
|
}
|
|
|
|
-keepclasseswithmembernames class * {
|
|
native <methods>;
|
|
}
|
|
|
|
-keepclassmembers class * extends android.app.Activity {
|
|
public void *(android.view.View);
|
|
}
|
|
-keepclassmembers class * implements android.os.Parcelable {
|
|
public static final android.os.Parcelable$Creator *;
|
|
}
|
|
-keep class **.R$* {*;}
|
|
-keepclassmembers enum * { *;}
|
|
|
|
|
|
#logger
|
|
-keep class com.orhanobut.logger.**{*;}
|
|
|
|
############################################ retrofit2
|
|
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
|
|
# EnclosingMethod is required to use InnerClasses.
|
|
-keepattributes Signature, InnerClasses, EnclosingMethod
|
|
|
|
# Retrofit does reflection on method and parameter annotations.
|
|
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
|
|
|
|
# Retain service method parameters when optimizing.
|
|
-keepclassmembers,allowshrinking,allowobfuscation interface * {
|
|
@retrofit2.http.* <methods>;
|
|
}
|
|
|
|
# Ignore annotation used for build tooling.
|
|
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
|
|
|
|
# Ignore JSR 305 annotations for embedding nullability information.
|
|
-dontwarn javax.annotation.**
|
|
|
|
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
|
|
-dontwarn kotlin.Unit
|
|
|
|
# Top-level functions that can only be used by Kotlin.
|
|
-dontwarn retrofit2.KotlinExtensions
|
|
-dontwarn retrofit2.KotlinExtensions$*
|
|
|
|
# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy
|
|
# and replaces all potential values with null. Explicitly keeping the interfaces prevents this.
|
|
-if interface * { @retrofit2.http.* <methods>; }
|
|
-keep,allowobfuscation interface <1>
|
|
############################################ retrofit2
|
|
|
|
############################################ okhttp
|
|
# 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
|
|
-dontwarn org.conscrypt.ConscryptHostnameVerifier
|
|
############################################ okhttp
|
|
|
|
############################################ okio
|
|
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
|
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
|
############################################ okio
|
|
|
|
|
|
##---------------Begin: proguard configuration for Gson ----------
|
|
# Gson uses generic type information stored in a class file when working with fields. Proguard
|
|
# removes such information by default, so configure it to keep all of it.
|
|
-keepattributes Signature
|
|
|
|
# For using GSON @Expose annotation
|
|
-keepattributes *Annotation*
|
|
|
|
# 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>;
|
|
}
|
|
##---------------End: proguard configuration for Gson ----------
|
|
|
|
|
|
##---------------Begin: proguard configuration for MMKV ----------
|
|
# OSS_ANDROID_TEMPLATE_FILE_HEADER
|
|
#
|
|
# Proguard config for publish an private aar module
|
|
# NOTE: It's different from libraries' consumer proguard config
|
|
#
|
|
-renamesourcefileattribute SourceFile
|
|
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,EnclosingMethod
|
|
|
|
# Preserve all annotations.
|
|
|
|
-keepattributes *Annotation*
|
|
|
|
# Preserve all public classes, and their public and protected fields and
|
|
# methods.
|
|
|
|
-keep public class * {
|
|
public protected *;
|
|
}
|
|
|
|
# Preserve all .class method names.
|
|
|
|
-keepclassmembernames class * {
|
|
java.lang.Class class$(java.lang.String);
|
|
java.lang.Class class$(java.lang.String, boolean);
|
|
}
|
|
|
|
# Preserve all native method names and the names of their classes.
|
|
|
|
-keepclasseswithmembernames class * {
|
|
native <methods>;
|
|
}
|
|
|
|
# Preserve the special static methods that are required in all enumeration
|
|
# classes.
|
|
|
|
-keepclassmembers class * extends java.lang.Enum {
|
|
public static **[] values();
|
|
public static ** valueOf(java.lang.String);
|
|
}
|
|
|
|
# Explicitly preserve all serialization members. The Serializable interface
|
|
# is only a marker interface, so it wouldn't save them.
|
|
# You can comment this out if your library doesn't use serialization.
|
|
# If your code contains serializable classes that have to be backward
|
|
# compatible, please refer to the manual.
|
|
|
|
-keepclassmembers class * implements java.io.Serializable {
|
|
static final long serialVersionUID;
|
|
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();
|
|
}
|
|
##---------------End: proguard configuration for MMKV ----------
|
|
|
|
##---------------Start: proguard configuration for Alipay ----------
|
|
-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.widget.**{*;}
|
|
-keep class com.alipay.sdk.app.AuthTask{ public *;}
|
|
-keep class com.alipay.sdk.app.H5PayCallback {
|
|
<fields>;
|
|
<methods>;
|
|
}
|
|
-keep class com.alipay.android.phone.mrpc.core.** { *; }
|
|
-keep class com.alipay.apmobilesecuritysdk.** { *; }
|
|
-keep class com.alipay.mobile.framework.service.annotation.** { *; }
|
|
-keep class com.alipay.mobilesecuritysdk.face.** { *; }
|
|
-keep class com.alipay.tscenter.biz.rpc.** { *; }
|
|
-keep class org.json.alipay.** { *; }
|
|
-keep class com.alipay.tscenter.** { *; }
|
|
-keep class com.ta.utdid2.** { *;}
|
|
-keep class com.ut.device.** { *;}
|
|
##---------------End: proguard configuration for Alipay ----------
|
|
|
|
##----测试一下,二维码生成和谷歌对话框的忽略(忽略该包下的所有类)----
|
|
-keep class com.google.zxing.** { *; }
|
|
-keep class com.journeyapps.barcodescanner.** { *; }
|
|
-keep class com.afollestad.materialdialogs.** { *; }
|
|
|