You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置KEEP语句避免Firebase Firestore与Glide类被代码混淆移除?

搞定Firebase Firestore与Glide的混淆加载问题

嘿,我之前也碰到过一模一样的情况!debug模式跑的好好的,一打正式签名包就掉链子,问题根源其实很简单:开启minifyEnabled true后,ProGuard会混淆压缩代码,把类名、方法名重命名,但Firebase Firestore依赖反射来序列化/反序列化数据,Glide也需要保留核心类和自定义逻辑,这些类被改了名,自然就没法正常加载数据或图片了。

下面是你需要在proguard-rules.pro里添加的Keep语句,分两部分整理好了:

1. Firebase Firestore 专属规则

# 保留Firebase核心服务类,不能让ProGuard乱改
-keep class com.google.firebase.** { *; }
-keep class com.google.android.gms.** { *; }

# 重点保护Firestore的所有类,毕竟数据读写全靠它
-keep class com.google.firebase.firestore.** { *; }

# 划重点!如果你有自己写的Firestore实体类(比如用来映射数据库文档的Model类),必须单独保留
# 举个例子,如果你的实体类都在com.yourapp.models包下,就加这行
-keep class com.yourapp.models.** { *; }

2. Glide 专属规则

既然你提到了Glide,也得给它加保护,避免图片加载异常:

# 保留Glide的核心类和模块
-keep public class com.bumptech.glide.** { *; }
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public class * extends com.bumptech.glide.module.LibraryGlideModule

# 保留Glide需要的注解和枚举类,防止反射失效
-keepattributes Signature
-keepattributes *Annotation*
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

额外小提示

  • 你当前用的Firebase依赖版本是兼容的,不用调整;
  • 如果加完规则还有警告,可以试试加-dontwarn com.google.firebase.**和-dontwarn com.bumptech.glide.**来忽略,但这是最后手段,优先保证上面的Keep规则写对哦!

内容的提问来源于stack exchange,提问作者Nasib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:01:58