From 952621baaa07a782aba34cc4b70d08348190f97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=B0=8F=E6=B1=9F?= <461355754@qq.com> Date: Thu, 18 Dec 2025 10:28:46 +0800 Subject: [PATCH] =?UTF-8?q?1:=E6=B7=BB=E5=8A=A0cos=E7=9A=84=E6=B7=B7?= =?UTF-8?q?=E6=B7=86=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- app/proguard-rules.pro | 151 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 143 insertions(+), 12 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 1fc4a0e4..b6ceb63f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -105,7 +105,7 @@ android { } buildTypes { release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release @@ -129,7 +129,7 @@ android { debug { debuggable true - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.debug diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index d98ee460..c73f474b 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -921,19 +921,23 @@ public static java.lang.String TABLENAME; -keepclassmembers class com.xscm.moduleutil.event.MqttBean** { *; } +-keep class com.xscm.moduleutil.bean.GiftBean** {*;} +-keepclassmembers class com.xscm.moduleutil.bean.GiftBean** { + *; +} -keep class com.xscm.moduleutil.bean.XLHBean** {*;} -keepclassmembers class com.xscm.moduleutil.bean.XLHBean** { *; } --keep class com.xscm.moduleutil.bean.RedBean** {*;} --keepclassmembers class com.xscm.moduleutil.bean.RedBean** { +-keep class com.xscm.moduleutil.event.RedBean** {*;} +-keepclassmembers class com.xscm.moduleutil.event.RedBean** { *; } --keep class com.xscm.moduleutil.bean.HourlyBean** {*;} --keepclassmembers class com.xscm.moduleutil.bean.HourlyBean** { +-keep class com.xscm.moduleutil.event.HourlyBean** {*;} +-keepclassmembers class com.xscm.moduleutil.event.HourlyBean** { *; } @@ -945,9 +949,136 @@ public static java.lang.String TABLENAME; -keep class **.R$string { *; } --keep class com.qcloud.cos.** { *; } --dontwarn com.qcloud.cos.** --keep class com.qcloud.cos.model.** { *; } --keep class * implements com.qcloud.cos.** { *; } --keepattributes Signature, *Annotation* --keep class com.qcloud.cos.**$* { *; } +# ========== 腾讯云COS SDK 混淆规则 ========== + +# COS SDK混淆规则 +-dontwarn com.tencent.cos.** +-keep class com.tencent.cos.xml.**{*;} +-keep class com.tencent.qcloud.cos.**{*;} +# 相关依赖库保留 +-keep class com.tencent**qimei.** { *;} +-keep class com.tencent.qmsp.oaid2.** {*;} +-keep class com.tencent.beacon.** { *;} + +-keep class com.xscm.moduleutil.utils.cos.** { + *; +} +-keep class com.xscm.moduleutil.utils.cos.TempKeyBean { + *; +} +-keep class com.xscm.moduleutil.utils.cos.Credentials { + *; +} + + +# ========== 针对临时密钥 (SessionQCloudCredentials) 的增强规则 ========== +# 1. 精确保护引发错误的类及其所有成员(字段、方法) +#-keep class com.tencent.qcloud.core.auth.SessionQCloudCredentials { +# *; +#} +## 额外保护其所有内部类(如果有) +#-keep class com.tencent.qcloud.core.auth.SessionQCloudCredentials$* { +# *; +#} +# +## 2. 保护可能相关的其他凭证类和模型类 +#-keep class com.tencent.qcloud.core.auth.** { +# *; +#} +#-keep class com.tencent.qcloud.cos.model.** { +# *; +#} +# +## 3. 关键:保护所有类中的所有时间戳字段(按常见命名) +## 这可以防止JSON库因字段名被混淆而无法正确赋值 +#-keepclassmembers class ** { +# long beginTime; +# long startTime; +# long expiredTime; +# long expiration; +# java.util.Date beginTime; +# java.util.Date startTime; +# java.util.Date expiredTime; +# java.util.Date expiration; +#} +# +## 4. 保护所有setter/getter方法,确保序列化正常 +#-keepclassmembers class com.tencent.qcloud.** { +# public void set*(***); +# public *** get*(); +#} +# +## 5. 保留所有注解和泛型(这对JSON解析至关重要) +#-keepattributes Signature, InnerClasses, EnclosingMethod +#-keepattributes *Annotation* +# +## ========== 针对COS服务初始化及请求构造的增强规则 ========== +# +## 1. 精确保护服务配置类(CosXmlServiceConfig等),这是设置Bucket、Region的地方 +#-keep class com.tencent.qcloud.cos.**.CosXmlServiceConfig { +# *; +#} +#-keep class com.tencent.qcloud.cos.**.COSBucket { +# *; +#} +## 保护所有可能存储地域、AppId、BucketName等配置的类 +#-keep class * implements com.tencent.qcloud.core.common.QCloudClientConfig { +# *; +#} +# +## 2. 保护所有与“主机”、“域名”、“端点”相关的字段和方法(使用模糊匹配) +#-keepclassmembers class com.tencent.qcloud.** { +# # 保护所有可能是字符串类型的配置字段 +# java.lang.String bucketName; +# java.lang.String bucket; +# java.lang.String region; +# java.lang.String appid; +# java.lang.String endpoint; +# java.lang.String host; +# java.lang.String suffix; +# # 保护这些字段的getter/setter方法 +# public void set*(***); +# public *** get*(); +#} +# +## 3. 保护所有用于构建请求、URL的Builder类或相关类 +#-keep class com.tencent.qcloud.cos.**.builder.** { +# *; +#} +#-keep class com.tencent.qcloud.cos.transfer.** { +# *; +#} +# +## 4. 【关键】保留所有注解,很多SDK使用注解来标记配置 +#-keepattributes *Annotation* +## 保留所有可能用于序列化配置的类成员 +#-keepclassmembers class ** { +# @com.tencent.qcloud.core.auth.SensitiveData *; +#} +# +## 1. 直接保护出错堆栈中的核心类 CosXmlBaseService 及其一切 +#-keep class com.tencent.cos.xml.CosXmlBaseService { +# *; +#} +## 2. 保护其所有内部类和父类/子类 +#-keep class * extends com.tencent.cos.xml.CosXmlBaseService { +# *; +#} +## 3. 保护所有可能用于存储Bucket、Region等配置的模型类 +#-keep class com.tencent.cos.xml.model.** { +# *; +#} +## 4. 额外保护所有涉及“host”、“endpoint”、“bucket”、“region”字符串的字段,无论它在哪个类 +#-keepclassmembers class ** { +# @com.tencent.qcloud.core.auth.SensitiveData ; +# java.lang.String *bucket*; +# java.lang.String *region*; +# java.lang.String *endpoint*; +# java.lang.String *host*; +# java.lang.String *appid*; +#} + +#-keep class com.qcloud.cos.model.** { *; } +#-keep class * implements com.qcloud.cos.** { *; } +#-keepattributes Signature, *Annotation* +#-keep class com.qcloud.cos.**$* { *; }