地毯厂 成品入库、发货校对扫描系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

354 lines
13 KiB

#混淆规则参考 https://www.jianshu.com/p/f3455ecaa56e
#keep 保留类和类中的成员,防止被混淆或移除
#keepnames 保留类和类中的成员,防止被混淆,成员没有被引用会被移除
#keepclassmembers 只保留类中的成员,防止被混淆或移除
#keepclassmembernames 只保留类中的成员,防止被混淆,成员没有引用会被移除
#keepclasseswithmembers 保留类和类中的成员,防止被混淆或移除,保留指明的成员
#keepclasseswithmembernames 保留类和类中的成员,防止被混淆,保留指明的成员,成员没有引用会被移除
# >>>>>>>>>>>>>>>----------基本不用动区域---------->>>>>>>>>>>>>>>
#----------------------基本指令区-----------------
#1.基本指令区
# 代码混淆压缩比,在0~7之间,默认为5,一般不做修改
-optimizationpasses 5
# 混合时不使用大小写混合,混合后的类名为小写
-dontusemixedcaseclassnames
# 指定不去忽略非公共库的类
-dontskipnonpubliclibraryclasses
# 指定不去忽略非公共库的类成员
-dontskipnonpubliclibraryclassmembers
# 不进行优化,建议使用此选项,
-dontoptimize
# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify 能够加快混淆速度
-dontpreverify
# 使我们的项目混淆后产生映射文件包含有类名->混淆后类名的映射关系
-verbose
# 屏蔽警告
-ignorewarnings
# 指定混淆是采用的算法,后面的参数是一个过滤器这个过滤器是谷歌推荐的算法,一般不做更改
-optimizations !code/simplification/cast,!field/*,!class/merging/*
# 保留Annotation不混淆
-keepattributes *Annotation*
# 避免混淆泛型
-keepattributes Signature
# 保持反射不被混淆
-keepattributes EnclosingMethod
#避免混淆内部类
-keepattributes InnerClasses
##dump文件列出apk包内所有class的内部结构
#-dump class_files.txt
##seeds.txt文件列出未混淆的类和成员
#-printseeds seeds.txt
##usage.txt文件列出从apk中删除的代码
#-printusage unused.txt
# 使用printmapping指定映射文件的名称
-printmapping proguardMapping.txt
#忽略警告
#-ignorewarnings
#避免混淆Android基本组件,下面是兼容性比较高的规则
-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
#不提示V4包下错误警告
-dontwarn android.support.v4.**
#保持下面的V4兼容包的类不被混淆
-keep class android.support.v4.**{*;}
-keep public class * extends android.support.v4.**
-keep public class * extends android.app.Fragment
#保持Activity中与View相关方法不被混淆
-keepclassmembers class * extends android.app.Activity{
public void *(android.view.View);
}
#避免混淆所有native的方法,涉及到C、C++
-keepclasseswithmembernames class * {
native <methods>;
}
#避免混淆自定义控件类的get/set方法和构造函数
-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);
}
#避免混淆枚举类
-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 *;
}
# 保留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 class **.R$* {*;}
#不混淆资源类下static的
-keepclassmembers class **.R$* {
public static <fields>;
}
# 对于带有回调函数的onXXEvent、**On*Listener的,不能被混淆
-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);
}
#避免混淆注解类
-dontwarn android.annotation
#(可选)避免Log打印输出
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** d(...);
public static *** i(...);
public static *** w(...);
public static *** e(...);
}
# <<<<<<<<<<<<<<<----------基本不用动区域 end ----------<<<<<<<<<<<<<<<
# EventBus
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
<init>(java.lang.Throwable);
}
# Glide
-dontwarn com.bumptech.glide.**
-keep class com.bumptech.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.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
# Gson
-dontwarn sun.misc.**
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.examples.android.model.** { <fields>; }
-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
-keepclassmembers,allowobfuscation class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keepattributes AnnotationDefault,RuntimeVisibleAnnotations
# 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.**
# OkHttp3
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okhttp3.**
-dontwarn okio.**
# Retrofit
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
-keepattributes Exceptions
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
# RxJava RxAndroid
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
-dontnote rx.internal.util.PlatformDependent
# RxJava 类和方法,以及它们的混淆规则
#io.reactivex 包下的类需要保持不被混淆,可以使用以下规则:
-keep class io.reactivex.** { *; }
#io.reactivex.disposables 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.disposables.** { *; }
#io.reactivex.functions 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.functions.** { *; }
#io.reactivex.schedulers 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.schedulers.** { *; }
#io.reactivex.subjects 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.subjects.** { *; }
#io.reactivex.plugins 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.plugins.** { *; }
#io.reactivex.internal.util 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.internal.util.** { *; }
#io.reactivex.internal.schedulers 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.internal.schedulers.** { *; }
#io.reactivex.internal.operators 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.internal.operators.** { *; }
#io.reactivex.internal.disposables 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.internal.disposables.** { *; }
#io.reactivex.internal.subscribers 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.internal.subscribers.** { *; }
#io.reactivex.observables 包下的类需要保持不被混淆:
-keep class io.reactivex.rxjava3.observables.** { *; }
#
-keep class org.joda.time.**{ *; }
# 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{*;}
# 如果使用了 byType 的方式获取 Service,需添加下面规则,保护接口
-keep interface * implements com.alibaba.android.arouter.facade.template.IProvider
# 如果使用了 单类注入,即不定义接口实现 IProvider,需添加下面规则,保护实现
-keep class * implements com.alibaba.android.arouter.facade.template.IProvider
-keep class com.techscan.modulebase.constants.ConstantRouter.** { *; }
-keep class com.techscan.modulebase.constants.Constants.** { *; }
-keep class com.techscan.modulebase.base.bean.** { *; }
-keep class com.techscan.modulebase.printutils.bean.** { *; }
-keep class com.techscan.modulebase.ui.widget.** { *; }
-keep class * implements com.alibaba.android.arouter.facade.template.IProvider{*;}
-keep class * implements com.alibaba.android.arouter.facade.template.IInterceptor{*;}
#Fastjson
-keepclassmembers @com.alibaba.fastjson2.annotation.JSONCreator class *
-keepclassmembers @com.alibaba.fastjson2.annotation.JSONField class * {
<init>(...);
}
-keep class com.alibaba.fastjson2.** { *; }
-keep class com.alibaba.fastjson2.**
#更新apk框架
-keep class com.xuexiang.xupdate.entity.** { *; }
#注意,如果你使用的是自定义Api解析器解析,还需要给你自定义Api实体配上混淆,如下是本demo中配置的自定义Api实体混淆规则:
-keep class com.xuexiang.xupdatedemo.entity.** { *; }
# 权限请求框架
-keep class com.hjq.permissions.** {*;}
#腾讯TBS
#-dontwarn dalvik.**
#-dontwarn com.tencent.smtt.**
#-keep class com.tencent.smtt.** {
# *;
#}
#-keep class com.tencent.tbs.** {
# *;
#}
# DialogX https://github.com/kongzue/DialogX/wiki/
-keep class com.kongzue.dialogx.** { *; }
-dontwarn com.kongzue.dialogx.**
# 额外的,建议将 android.view 也列入 keep 范围:
-keep class android.view.** { *; }
# 若启用模糊效果,请增加如下配置:
-dontwarn androidx.renderscript.**
-keep public class androidx.renderscript.** { *; }
-keep class com.luck.picture.lib.** { *; }
-keep class com.luck.lib.camerax.** { *; }
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
#---------------------------------忽略一些警告-------------------------------
# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn android.content.pm.PackageManager$ResolveInfoFlags
-dontwarn com.google.android.gms.tasks.OnFailureListener
-dontwarn com.google.android.gms.tasks.OnSuccessListener
-dontwarn com.google.android.gms.tasks.Task
-dontwarn com.google.mlkit.vision.barcode.BarcodeScanner
-dontwarn com.google.mlkit.vision.barcode.BarcodeScannerOptions$Builder
-dontwarn com.google.mlkit.vision.barcode.BarcodeScannerOptions
-dontwarn com.google.mlkit.vision.barcode.BarcodeScanning
-dontwarn com.google.mlkit.vision.common.InputImage
-dontwarn com.google.auto.service.AutoService
-dontwarn javax.lang.model.SourceVersion
-dontwarn javax.lang.model.element.Element
-dontwarn javax.lang.model.element.Modifier
-dontwarn javax.lang.model.type.TypeMirror
-dontwarn javax.ws.rs.Consumes
-dontwarn javax.ws.rs.Produces
-dontwarn javax.ws.rs.core.Response
-dontwarn javax.ws.rs.core.StreamingOutput
-dontwarn javax.ws.rs.ext.MessageBodyReader
-dontwarn javax.ws.rs.ext.MessageBodyWriter
-dontwarn javax.ws.rs.ext.Provider
-dontwarn javax.ws.rs.ext.Providers
-dontwarn org.glassfish.jersey.internal.spi.AutoDiscoverable
-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-dontwarn com.alibaba.fastjson2.**
-dontwarn com.alibaba.fastjson.**