Android开启minifyEnabled与shrinkResources后Firebase Analytics无数据,需调ProGuard吗?
问题根因与解决方案
核心结论:需要补充ProGuard保活规则,你的当前配置没有覆盖Firebase Analytics的核心类防混淆逻辑
你当前在release构建里开启了minifyEnabled true+优化版混淆规则proguard-android-optimize.txt,这套规则会默认裁剪所有被判定为“无入口调用”的类,而Firebase Analytics的核心链路大量依赖反射调用,没有显式的代码调用入口,极容易被误裁、重命名,直接导致上报链路完全失效。
必须添加到proguard-rules.pro的规则
直接将以下规则追加到你项目根目录的proguard规则文件里即可,不需要修改现有build.gradle结构:
# 保留Firebase Analytics核心SDK代码,防止被混淆/裁剪 -keep class com.google.android.gms.measurement.** { *; } -keep class com.google.firebase.analytics.** { *; } -dontwarn com.google.android.gms.measurement.** -dontwarn com.google.firebase.analytics.**
注意:虽然新版本Firebase SDK会自带基础的consumer ProGuard规则,但在开启
proguard-android-optimize.txt的激进优化时,自带规则的优先级会被部分覆盖,手动追加保活规则是最稳妥的规避方案。
配套排查校验点
- 如果你想100%确认是混淆导致的问题,可以临时将release构建的
minifyEnabled临时改为false,打个测试包验证Analytics上报是否恢复,如果能收到数据就可以确定是规则缺失问题 - 你当前已经开启的
firebaseCrashlytics { mappingFileUploadEnabled true }配置是正确的,但这套机制只能解析崩溃栈,没法排查Analytics这种无异常、纯链路被裁剪的失效问题,不能替代ProGuard保活规则 shrinkResources配置本身不会影响Firebase Analytics的上报,不需要为这个配置额外调整资源规则
内容的提问来源于stack exchange,提问作者Ankush Kapoor
相关产品推荐
相关产品推荐

