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

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版本的兼容逻辑:
    android.enableR8.fullMode=false
    
    该配置不会关闭代码混淆、资源压缩能力,仅关闭AGP7.1+新增的激进裁剪策略,对包体积、运行性能几乎无影响。
验证方式

安装Release构建包后,通过Logcat过滤FlurryAgent日志标签,若能看到会话启动、事件记录成功的相关日志,即代表上报链路恢复正常,无需调整Flurry初始化参数或升级、降级依赖版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:42:11