适配Android 12+时PendingIntent未指定可变性,依赖Facebook Login引发报错
解决Android 12+审核报错:PendingIntent未指定可变性标记(来自间接依赖库)
问题根源
你碰到的问题出在com.facebook.android:facebook-login间接引入的旧版androidx.media:media库上——该库的MediaButtonReceiver.buildMediaButtonPendingIntent方法没有为PendingIntent添加FLAG_IMMUTABLE或FLAG_MUTABLE标记,不符合Android 12及以上版本的强制要求。哪怕你用了最新版Facebook SDK,它内部依赖的androidx.media版本可能依然未适配。
直接解决方案
在Module级别的build.gradle中强制指定适配Android 12+的androidx.media:media版本,覆盖Facebook SDK引入的旧版本:
dependencies { // 强制升级到1.4.0及以上版本(示例用1.6.0,可按需选更高稳定版) implementation("androidx.media:media:1.6.0") { force = true } // 保留你原本的Facebook登录依赖 implementation 'com.facebook.android:facebook-login:你的最新版本号' // 其他项目依赖... }
关键说明
- 1.4.0及以上版本的
androidx.media已经修复了这个问题,默认给buildMediaButtonPendingIntent生成的PendingIntent加上了FLAG_IMMUTABLE标记,满足审核要求。 force = true会让Gradle强制使用你指定的版本,忽略依赖树中其他库带来的旧版依赖。
验证方式
添加依赖后,执行以下命令确认依赖树中的androidx.media版本已更新:
./gradlew app:dependencies
在输出结果里找到androidx.media:media,确认显示的是你指定的适配版本即可。
内容的提问来源于stack exchange,提问作者Vishal Afre
相关产品推荐
相关产品推荐

