升级targetSdk至31后Facebook受众网络SDK出现PendingIntent崩溃如何解决
根因说明
本次崩溃是com.facebook.android:audience-network-sdk:5.5.0版本未适配Android 12(API 31)系统规则导致:Android 12及以上要求所有PendingIntent必须明确指定FLAG_IMMUTABLE或FLAG_MUTABLE标识,而你当前使用的5.5.0版本SDK发布早于Android 12正式版,内部创建PendingIntent时未添加对应标识,触发系统校验异常。
解决方案
方案1:升级Audience Network SDK(优先推荐)
Facebook官方在6.8.0及以上版本的Audience Network SDK中已正式修复该兼容问题,直接将依赖升级到支持API31的稳定版即可,参考配置:
implementation ('com.facebook.android:audience-network-sdk:6.14.0'){ // 可替换为最新官方稳定版 exclude group: 'com.google.android.gms' }
升级后完成全广告场景测试,原有多进程支持配置、测试设备配置无需特殊调整即可正常运行。
方案2:临时兼容方案(仅适用于暂时无法升级SDK的场景)
如果当前业务暂不支持升级SDK版本,可通过反射Hook系统PendingIntent相关的创建方法,在API31及以上系统中自动为未指定标识的PendingIntent追加FLAG_IMMUTABLE属性,拦截崩溃。该方案属于临时过渡手段,存在系统版本适配风险,不建议长期使用。
额外注意事项
- 升级SDK后优先在Android 12及以上设备上测试开屏、插屏、激励视频等所有广告场景,确认无兼容问题再上线。
- 同步排查自身业务代码中所有创建
PendingIntent的位置,按系统要求添加对应标识,避免其他业务场景出现同类崩溃。
内容的提问来源于stack exchange,提问作者Nanda Z
相关产品推荐
相关产品推荐

