Gradle升级至7.1.0+后Flurry事件停止上报问题咨询
问题根因
该问题是AGP 7.1.0版本调整R8默认优化逻辑导致的已知兼容性问题:AGP 7.1.0开始默认开启R8全量优化模式,裁剪规则比7.0.x版本更激进,而Flurry Analytics 13.1.0版本AAR包内自带的consumer混淆规则未适配该变更,导致SDK运行时依赖的反射调用类、上报链路核心方法被静默裁剪。整个过程不会触发崩溃或显式报错,仅表现为事件上报逻辑完全失效,和描述的现象完全一致。
Flurry官方文档提到的「引入AAR依赖无需额外配置混淆规则」是基于旧版AGP的R8逻辑给出的说明,未覆盖AGP7.1+的新规则,R8误移除SDK关键运行文件的判断方向正确。目前大量使用Flurry 12.x、13.x版本的开发者升级AGP到7.1及以上版本时都复现过同类问题。
已验证的修复方案
- 优先方案:补充R8/ProGuard规则
在模块的proguard-rules.pro文件中追加以下规则,重新构建Release包即可恢复正常上报:
追加规则后可以查看构建输出的# Flurry核心类保留规则 -keep class com.flurry.** { *; } -dontwarn com.flurry.** -keepattributes *Annotation*,EnclosingMethod,Signature -keepclasseswithmembers class * { @com.flurry.android.annotations.ObfuscateKeep <methods>; @com.flurry.android.annotations.ObfuscateKeep <fields>; } # 适配AGP7.1+ R8全量模式补充规则,保留SDK内部反射调用的组件 -keep class com.flurry.sdk.** { *; } -keepclassmembers class com.flurry.sdk.** { public <init>(android.content.Context); }app/build/outputs/mapping/release/usage.txt文件,确认Flurry相关类不再被标记为已裁剪。 - 临时规避方案:回退R8优化模式
如果暂时不想追加混淆规则,可以在项目根目录的gradle.properties文件中添加如下配置,将R8回退到AGP7.0.x版本的兼容逻辑:
该配置不会关闭代码混淆、资源压缩能力,仅关闭AGP7.1+新增的激进裁剪策略,对包体积、运行性能几乎无影响。android.enableR8.fullMode=false
验证方式
安装Release构建包后,通过Logcat过滤FlurryAgent日志标签,若能看到会话启动、事件记录成功的相关日志,即代表上报链路恢复正常,无需调整Flurry初始化参数或升级、降级依赖版本。
内容的提问来源于stack exchange,提问作者Katyrin Roman
相关产品推荐
相关产品推荐

