Android facebook-login 库 11.2.0 崩溃 Android 12 - 定位 S+(版本 31 及更高版本)需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之

Posted

技术标签:

【中文标题】Android facebook-login 库 11.2.0 崩溃 Android 12 - 定位 S+(版本 31 及更高版本)需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之一【英文标题】:Android facebook-login library 11.2.0 crashes Android 12 - Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE 【发布时间】:2021-11-03 23:13:30 【问题描述】:

我正在使用带有 facebook-login 的 Firebase 并收到以下错误:

Caused by: java.lang.IllegalArgumentException: my.app.id: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
    at android.app.PendingIntent.checkFlags(PendingIntent.java:375)
    at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:645)
    at android.app.PendingIntent.getBroadcast(PendingIntent.java:632)
    at com.facebook.AccessTokenManager.setTokenExpirationBroadcastAlarm(AccessTokenManager.kt:121)
    at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:94)
    at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:47)
    at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:428)
    at com.facebook.AccessToken.setCurrentAccessToken(Unknown Source:2)
    at com.facebook.login.LoginManager.finishLogin(LoginManager.java:894)
    at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:247)
    at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:186)

我正在使用的 gradle 库条目是:

implementation 'com.facebook.android:facebook-login:11.2.0'

setTokenExpirationBroadcastAlarm 代码似乎没有设置标志。有没有人对此有解决方法或知道我做错了什么?

当用户登录时,我的代码在onActivityResult 中调用:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) 
    super.onActivityResult(requestCode, resultCode, data)
    // Pass the activity result back to the Facebook SDK
    facebookCallbackManager.onActivityResult(requestCode, resultCode, data)

我正在使用 Android 12 的 Pixel 上对此进行测试。

【问题讨论】:

如果您无法控制构建 PendingIntent,那么您将无法修复它(除了尚未针对 Android 12 之外)。您需要联系 Facebook 让他们修复他们的图书馆。 看起来这个问题的修复将在 11.3.0 中发布。 ??? github.com/facebook/facebook-android-sdk/issues/… 【参考方案1】:

降级到版本11.0.0 对我有用。尝试降级。

【讨论】:

以上是关于Android facebook-login 库 11.2.0 崩溃 Android 12 - 定位 S+(版本 31 及更高版本)需要 FLAG_IMMUTABLE 或 FLAG_MUTABLE 之的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何配置 Facebook 进行身份验证

点击 Facebook 登录按钮后 Facebook 登录对话框消失

如何获取用于 react-native-fbsdk 模块的 Facebook SDK 版本

facebook 第三方登录

Facebook登录按钮不刷新自动注销

Android 逆向Android 中常用的 so 动态库 ( /system/lib/libc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )(代