319 lines
12 KiB
Prolog
319 lines
12 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
|
||
|
||
|
||
#
|
||
#-------------------------------------------基本不用动区域----------------------------------------------
|
||
#
|
||
#
|
||
# -----------------------------基本 -----------------------------
|
||
|
||
# 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。)
|
||
-optimizationpasses 5
|
||
# 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名)
|
||
-dontusemixedcaseclassnames
|
||
# 指定不去忽略非公共的库类(不跳过library中的非public的类)
|
||
-dontskipnonpubliclibraryclasses
|
||
# 指定不去忽略包可见的库类的成员
|
||
-dontskipnonpubliclibraryclassmembers
|
||
#不进行优化,建议使用此选项,
|
||
-dontoptimize
|
||
# 不进行预校验,Android不需要,可加快混淆速度。
|
||
-dontpreverify
|
||
|
||
# 屏蔽警告,暂不开启。用于抛出异常
|
||
#-ignorewarnings
|
||
# 指定混淆是采用的算法,后面的参数是一个过滤器
|
||
# 这个过滤器是谷歌推荐的算法,一般不做更改
|
||
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||
# 保护代码中的Annotation不被混淆
|
||
-keepattributes *Annotation*,InnerClasses,Signature,EnclosingMethod
|
||
# 避免混淆泛型, 这在JSON实体映射时非常重要
|
||
-keepattributes Signature
|
||
# 抛出异常时保留代码行号
|
||
-keepattributes SourceFile,LineNumberTable
|
||
#优化时允许访问并修改有修饰符的类和类的成员,这可以提高优化步骤的结果。
|
||
# 比如,当内联一个公共的getter方法时,这也可能需要外地公共访问。
|
||
# 虽然java二进制规范不需要这个,要不然有的虚拟机处理这些代码会有问题。当有优化和使用-repackageclasses时才适用。
|
||
#指示语:不能用这个指令处理库中的代码,因为有的类和类成员没有设计成public ,而在api中可能变成public
|
||
-allowaccessmodification
|
||
# 混淆时记录日志(打印混淆的详细信息)
|
||
# 这句话能够使我们的项目混淆后产生映射文件
|
||
# 包含有类名->混淆后类名的映射关系
|
||
-verbose
|
||
|
||
|
||
#
|
||
# ----------------------------- 默认保留 -----------------------------
|
||
#
|
||
#----------------------------------------------------
|
||
# 保持哪些类不被混淆
|
||
#继承activity,application,service,broadcastReceiver,contentprovider....不进行混淆
|
||
|
||
-keep public class * extends android.app.Activity
|
||
-keep public class * extends android.app.Fragment
|
||
-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 androidx.*{*;}
|
||
-keep public class * extends androidx.*{*;}
|
||
-keep interface androidx.* {*;}
|
||
-dontwarn androidx.**
|
||
|
||
-dontwarn android.support.design.**
|
||
-keep public class android.support.design.R$* { *; }
|
||
-keep class com.google.android.material.* {*;}
|
||
|
||
-keepclasseswithmembernames class * {
|
||
native <methods>;
|
||
}
|
||
|
||
#这个主要是在layout 中写的onclick方法android:onclick="onClick",不进行混淆
|
||
#表示不混淆Activity中参数是View的方法
|
||
-keepclassmembers class * extends android.app.Activity{
|
||
public void *(android.view.View);
|
||
}
|
||
#表示不混淆枚举中的values()和valueOf()方法
|
||
-keepclassmembers enum * {
|
||
public static **[] values();
|
||
public static ** valueOf(java.lang.String);
|
||
}
|
||
|
||
#表示不混淆任何一个View中的setXxx()和getXxx()方法,
|
||
#因为属性动画需要有相应的setter和getter的方法实现,混淆了就无法工作了。
|
||
-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);
|
||
}
|
||
-keepclasseswithmembers class * {
|
||
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 *;
|
||
}
|
||
|
||
# 这指定了继承Serizalizable的类的如下成员不被移除混淆
|
||
-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();
|
||
}
|
||
|
||
# 保留R下面的资源
|
||
-keep class **.R$* {
|
||
*;
|
||
}
|
||
|
||
#不混淆资源类下static的
|
||
-keepclassmembers class **.R$* {
|
||
public static <fields>;
|
||
}
|
||
|
||
# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
|
||
-keepclassmembers class * {
|
||
void *(**On*Event);
|
||
void *(**On*Listener);
|
||
}
|
||
|
||
#(可选)避免Log打印输出
|
||
-assumenosideeffects class android.util.Log {
|
||
public static *** v(...);
|
||
public static *** d(...);
|
||
public static *** i(...);
|
||
public static *** w(...);
|
||
}
|
||
|
||
#kotlin
|
||
-keep class kotlin.* { *; }
|
||
-keepclassmembernames class kotlinx.*{
|
||
volatile <fields>;
|
||
}
|
||
-keep class kotlin.Metadata { *; }
|
||
-dontwarn kotlin.*
|
||
-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);
|
||
}
|
||
-keepclassmembers class kotlin.Metadata { *; }
|
||
-keep @kotlin.Metadata class *
|
||
-keepclasseswithmembers @kotlin.Metadata class * { *; }
|
||
|
||
#----------------------------------------第三方库----------------------------------------------
|
||
#-----高德地图-----
|
||
#3D 地图 V5.0.0之后:
|
||
-keep class com.amap.api.maps.*{*;}
|
||
-keep class com.autonavi.*{*;}
|
||
-keep class com.amap.api.trace.*{*;}
|
||
#定位
|
||
-keep class com.amap.api.location.*{*;}
|
||
-keep class com.amap.api.fence.*{*;}
|
||
-keep class com.autonavi.aps.amapapi.model.*{*;}
|
||
#搜索
|
||
-keep class com.amap.api.services.*{*;}
|
||
#导航
|
||
-keep class com.amap.api.navi.*{*;}
|
||
-keep class com.autonavi.*{*;}
|
||
|
||
#-----Gson-----
|
||
-dontwarn sun.misc.**
|
||
# 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>;
|
||
}
|
||
|
||
#-----ARouter-----
|
||
-keep public class com.alibaba.android.arouter.routes.*{*;}
|
||
-keep public class com.alibaba.android.arouter.facade.*{*;}
|
||
-keep class * implements com.alibaba.android.arouter.facade.template.ISyringe{*;}
|
||
# If you use the byType method to obtain Service, add the following rules to protect the interface:
|
||
-keep interface * implements com.alibaba.android.arouter.facade.template.IProvider
|
||
# If single-type injection is used, that is, no interface is defined to implement IProvider, the following rules need to be added to protect the implementation
|
||
# -keep class * implements com.alibaba.android.arouter.facade.template.IProvider
|
||
|
||
#-----Glide-----
|
||
-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 *;
|
||
}
|
||
#如果你的 target API 低于 Android API 27,请添加:
|
||
-dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder
|
||
|
||
#-----Fresco-----
|
||
-keep,allowobfuscation interface com.facebook.common.internal.DoNotStrip
|
||
-keep @com.facebook.common.internal.DoNotStrip class *
|
||
-keepclassmembers class * {
|
||
@com.facebook.common.internal.DoNotStrip *;
|
||
}
|
||
-keepclassmembers class * {
|
||
native <methods>;
|
||
}
|
||
-dontwarn okio.**
|
||
-dontwarn com.squareup.okhttp.**
|
||
-dontwarn okhttp3.**
|
||
-dontwarn javax.annotation.**
|
||
-dontwarn com.android.volley.toolbox.**
|
||
-dontwarn com.facebook.infer.**
|
||
|
||
#-----Okio-----
|
||
# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
|
||
-dontwarn org.codehaus.mojo.animal_sniffer.*
|
||
-dontwarn com.squareup.**
|
||
-dontwarn okio.**
|
||
-keep public class org.codehaus.* { *; }
|
||
-keep public class java.nio.* { *; }
|
||
|
||
#-----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
|
||
|
||
#-----Retrofit-----
|
||
# 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.*
|
||
# 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>
|
||
|
||
#-----ProtoBuf-----
|
||
-keep class com.google.protobuf.*{*;}
|
||
|
||
#-----GSYVideoPlayer-----
|
||
-keep class tv.danmaku.ijk.* { *; }
|
||
-dontwarn tv.danmaku.ijk.**
|
||
-keep class com.shuyu.gsyvideoplayer.* { *; }
|
||
-dontwarn com.shuyu.gsyvideoplayer.**
|
||
|
||
#-----EventBus-----
|
||
-keepattributes *Annotation*
|
||
-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);
|
||
}
|
||
|
||
#-----ZhiDaoService-----
|
||
-keep class com.zhidao.auto.platform.*{*;}
|
||
-keep class com.zhidaohulian.*{*;}
|
||
-keep class com.zhidao.boot.*{*;}
|
||
-keep class com.elegant.*{*;}
|
||
-keep class com.zhidao.socketsdk.*{*;}
|
||
-keep class com.zhidao.ptech.*{*;}
|
||
-keep class com.zhidao.autopilotcore.*{*;}
|
||
-keep class com.zhidao.autopilot.support.*{*;}
|
||
-keep class com.zhidao.voice.library.*{*;}
|
||
-keep class com.zhidao.voicesdk.*{*;}
|
||
|
||
|
||
|
||
|