#指定Java的版本
|
-target 1.8
|
#proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等
|
-dontshrink
|
#是否关闭字节码级别的优化,如果不开启则设置如下配置
|
-dontoptimize
|
#混淆时不生成大小写混合的类名,默认是可以大小写混合
|
-dontusemixedcaseclassnames
|
# 对于类成员的命名的混淆采取唯一策略
|
-useuniqueclassmembernames
|
#混淆时不生成大小写混合的类名,默认是可以大小写混合
|
-dontusemixedcaseclassnames
|
#混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代
|
-adaptclassstrings
|
|
-verbose
|
-printmapping proguard-mapping.txt # 生成混淆映射表(用于调试)
|
|
#对异常、注解信息予以保留
|
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
|
# 此选项将保存接口中的所有原始名称(不混淆)-->
|
-keepnames interface ** { *; }
|
# 此选项将保存所有软件包中的所有原始接口文件(不进行混淆)
|
#-keep interface * extends * { *; }
|
#保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数
|
-keepparameternames
|
# 保留枚举成员及方法
|
-keepclassmembers enum * { *; }
|
# 不混淆所有类,保存原始定义的注释-
|
-keepclassmembers class * {
|
@org.springframework.context.annotation.Bean *;
|
@org.springframework.beans.factory.annotation.Autowired *;
|
@org.springframework.beans.factory.annotation.Value *;
|
@org.springframework.stereotype.Service *;
|
@org.springframework.stereotype.Component *;
|
}
|
|
#忽略warn消息
|
-ignorewarnings
|
#忽略note消息
|
-dontnote
|
#打印配置信息
|
-printconfiguration
|
-keep public class com.iailab.module.system.SystemServerApplication {
|
public static void main(java.lang.String[]);
|
}
|
# 保留Feign客户端接口
|
-keep @org.springframework.cloud.openfeign.FeignClient class * {
|
*;
|
}
|
# 业务包保留
|
-keep class com.iailab.module.system.api.** { *; }
|
|
# 日志与反射
|
-keepclassmembers class * {
|
org.slf4j.Logger *;
|
}
|
-keepattributes RuntimeVisibleAnnotations, Signature
|
# 保留common模块的公共类
|
-keep class com.iailab.framework.** { *; }
|
|
# 保留mybatis-plus相关类
|
-keep class com.baomidou.mybatisplus.** { *; }
|
-keep @com.baomidou.mybatisplus.annotation.TableName class * { *; }
|
|
# 保留数据权限注解
|
-keep @com.iailab.framework.datapermission.core.** class *
|
|
# 保留Spring Cloud配置类
|
-keep class org.springframework.cloud.** { *; }
|
|
# 保留domain实体类
|
-keep class com.iailab.module.*.dal.dataobject.** { *; }
|
|
# 保留DTO和VO
|
-keep class com.iailab.module.*.controller.**.vo.** { *; }
|
-keep class com.iailab.module.*.service.**.dto.** { *; }
|
|
# 保留JSON注解
|
-keep @com.fasterxml.jackson.annotation.JsonInclude class *
|
-keepclassmembers class * {
|
@com.fasterxml.jackson.annotation.JsonIgnore *;
|
@com.fasterxml.jackson.annotation.JsonProperty *;
|
}
|
-keep @io.swagger.v3.oas.annotations.Operation class *
|
# 保留路由断言工厂类
|
-keep class org.springframework.cloud.gateway.handler.predicate.** { *; }
|
|
# 保留若依自定义过滤器
|
-keep class com.iailab.gateway.filters.** { *; }
|
|
# 保留所有Spring组件类的原始名称
|
-keepnames @org.springframework.stereotype.Component class *
|
-keepnames @org.springframework.stereotype.Service class *
|
-keepnames @org.springframework.stereotype.Repository class *
|
|
# 保留@Bean方法的名称
|
-keepclassmembernames class * {
|
@org.springframework.context.annotation.Bean *;
|
}
|
|
# 保留所有 Spring 注解及组件
|
-keep @org.springframework.stereotype.Component class * { *; }
|
-keep @org.springframework.context.annotation.Configuration class * { *; }
|
|
# 保留配置类及字段
|
-keep @org.springframework.boot.context.properties.ConfigurationProperties class * { *; }
|
-keepclassmembers @org.springframework.boot.context.properties.ConfigurationProperties class * { *; }
|
|
# 保留关键业务模块
|
-keep class com.iailab.module.system.framework.sms.** { *; }
|
-keepclassmembers class com.iailab.module.system.framework.sms.** { *; }
|
|
-keep class com.iailab.module.system.convert.**.** { *; }
|
-keepclassmembers class com.iailab.module.system.convert.**.** { *; }
|
|
# 保留 Setter 和资源文件
|
-keepclassmembers class * { void set*(***); }
|
|
# ========== SPI 相关保留 ==========
|
-keep interface com.xingyuv.captcha.service.** { *; }
|
-keep class * implements com.xingyuv.captcha.service.** { *; }
|
|
# ========== Spring 自动配置类 ==========
|
-keep @org.springframework.boot.autoconfigure.AutoConfiguration class * { *; }
|
-keep class com.xingyuv.captcha.config.** { *; }
|
|
# ========== 明确保留报错类 ==========
|
-keep class com.iailab.module.system.framework.captcha.core.RedisCaptchaServiceImpl {
|
public <init>();
|
public *;
|
}
|