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

升级Android SDK至31后出现FLAG_IMMUTABLE/MUTABLE相关报错求助

解决方案

核心原因

你遇到的问题是因为旧版Firebase Messaging/Core库(17.6.0/16.0.8)未适配Android 12(SDK 31)的PendingIntent创建规则——Android 12要求所有PendingIntent必须指定FLAG_IMMUTABLE或FLAG_MUTABLE,而这些旧版本库内部创建PendingIntent时未添加该标记。

推荐解决方案:升级Firebase依赖

这是最稳妥且官方支持的解决方式,Google在后续版本的Firebase库中已修复该适配问题,同时旧版本存在安全漏洞,建议优先升级:

  1. 替换你的Firebase依赖为最新稳定版,推荐使用Firebase BOM统一管理版本,避免版本冲突:
// 移除旧的单独版本依赖,添加Firebase BOM
implementation platform('com.google.firebase:firebase-bom:32.7.0')
// 无需指定版本,BOM会自动匹配兼容版本
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-core'
  1. 同步Gradle后,清理并重建项目,即可解决该报错。

备选方案:若无法升级Firebase

如果你因特殊原因暂时无法升级Firebase,可尝试以下步骤:

  • 确保项目依赖足够新的AndroidX Core库,它会在底层处理PendingIntent的flag适配:
implementation 'androidx.core:core:1.10.1'

该版本的AndroidX Core会自动为未指定flag的PendingIntent添加FLAG_IMMUTABLE(符合官方推荐),覆盖旧库的调用逻辑。

  • 检查本地通知相关的代码/依赖,确保所有手动创建的PendingIntent都添加了正确的flag(如果有):
// 示例:创建PendingIntent时添加FLAG_IMMUTABLE
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    requestCode,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:15:29