FacebookComponents icon indicating copy to clipboard operation
FacebookComponents copied to clipboard

Crash on Android 12

Open uwe-neuronation opened this issue 2 years ago • 17 comments

Facebook login fail, if Android target API is set to 31 and device running Android 12

java.lang.IllegalArgumentException: air.nn.mobile.app.main: 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) at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImp

I found that: https://stackoverflow.com/a/70763530/8880035

uwe-neuronation avatar Apr 21 '22 15:04 uwe-neuronation

This has been resolved with SDK 12.3.0 https://github.com/facebook/facebook-android-sdk/issues/997

when can this be updated here?

mos379 avatar Apr 27 '22 11:04 mos379

@Redth and @mattleibow I saw that you guys have released the latest Android versions of this library.

Could you please look into this issue, #224 and pull request #237

If the project is not maintained anymore that's fine but just let us know, so we know what to expect going forward.

tentom avatar Aug 23 '22 08:08 tentom

I was able to trim from the library everything except the login functionality with keeping all of the old NuGet packages, you can find the source code here: https://github.com/Snegovikufa/FacebookComponents.

Snegovikufa avatar Aug 24 '22 05:08 Snegovikufa

I created a slim binding to reduce the effort of upgrading to newer facebook sdk versions. Feel free to contribute if you need additional features to be supported by the slim binding: https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid

thisisthekap avatar Nov 22 '22 06:11 thisisthekap

I created a slim binding to reduce the effort of upgrading to newer facebook sdk versions. Feel free to contribute if you need additional features to be supported by the slim binding: https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid

Hi. could you give an implementation example?

sarapura12 avatar Dec 02 '22 01:12 sarapura12

@sarapura12 Please have a look to the java code at https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid/tree/main/java/FacebookSlim/facebookslim/src/main/java/com/tonestro/facebookslim.

This defines which methods are bound, and how they are bound. This should enable you to deduce the right C# calls.

thisisthekap avatar Dec 02 '22 07:12 thisisthekap

@thisisthekap I can't figure out how to use your library. Please provide some sample as replacing this library with yours is not a straight-forward process.

AnTo0o0o avatar Dec 07 '22 11:12 AnTo0o0o

@AnTo0o0o A slim binding exposes an API surface with reduced complexity which is then bound. This API surface is defined in https://github.com/thisisthekap/Xamarin.FacebookSlim.Droid/tree/main/java/FacebookSlim/facebookslim/src/main/java/com/tonestro/facebookslim

Some examples:

  • The java call com.tonestro.facebookslim.LoginManagerSlimFactory.createInstance() is translated to the C# call Com.Tonestro.Facebookslim.LoginManagerSlimFactory.CreateInstance()
  • The java call com.tonestro.facebookslim.AppEventsLoggerSlim.newLogger(android.context.Context) translates to the C# call Com.Tonestro.Facebookslim.AppEventsLoggerSlim.NewLogger(Android.Content.Context)

thisisthekap avatar Dec 07 '22 12:12 thisisthekap

Please does anybody know how to fix this issue ? It still causes crash in prod. And I can't find a nugget package for version 12 of the facebook sdk

DamienDoumer avatar Dec 08 '22 09:12 DamienDoumer

@DamienDoumer I've seen this issue couple of times and found some solution on stackoverflow when someone says that if you're going to install nugget package called Xamarin.AndroidX.Work.Work.Runtime.Ktx at least version 2.7.1 it should fix it. Since then I haven't noticed crashes anymore. However I'm not getting any info in login callback after being successfull logged in.

Rudnicky avatar Dec 28 '22 10:12 Rudnicky

Any idea when would below thing be part of Microsoft Xamarin Facebook v11.2.0.1 or later as this is crashing for me with error "java.lang.IllegalArgumentException: air.nn.mobile.app.main: 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."

This has been resolved with SDK 12.3.0 https://github.com/facebook/facebook-android-sdk/issues/997

HarshalCapgemini avatar Jan 19 '23 07:01 HarshalCapgemini

It's one year ago that Facebook fixed the bug on there side. Why it takes so long to fix the Xamarin binding? This is a "blocker" bug. The app will crash if you would use the current version of the Facebook binding! Last nuget was build in October 2021.

uwe-neuronation avatar Jan 19 '23 09:01 uwe-neuronation

Problem is that the admins have not made the pipeline public nor do any code maintenance anymore for android

On Thu, Jan 19, 2023 at 10:16 AM Uwe Schaller @.***> wrote:

It's one year ago that Facebook fixed the bug on there side. Why it takes so long to fix the Xamarin binding? This is a "blocker" bug. The app will crash if you would use the current version of the Facebook binding! Last nuget was build in October 2021.

— Reply to this email directly, view it on GitHub https://github.com/xamarin/FacebookComponents/issues/236#issuecomment-1396661014, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKYEC34QMPIGC4GRBFNGCGTWTEA6FANCNFSM5T7TIQAA . You are receiving this because you commented.Message ID: @.***>

mos379 avatar Jan 19 '23 10:01 mos379

@uwe-neuronation you can build updated NuGets manually:

  1. Clone https://github.com/angpysha/FacebookComponents.git
  2. Check out fix/android-12-fix branch
  3. Modify NUGET_VERSION in Facebook.Android/build.cake to something like 13.1.0-beta01
  4. Install cake (on Mac brew install cake)
  5. Run cake Facebook.Android/build.cake. NuGets will be created in Facebook.Android/output directory.

lassana avatar Jan 20 '23 17:01 lassana

@lassana We created Custom Nuget packages with this fix/android-12-fix branch. But we are facing Nuget packages dependency issue while installing those packages. Please find the attached screenshot below.

Error: Attempting to resolve dependencies for package 'Xamarin.Facebook.Login.Android.13.1.0-beta01' with DependencyBehavior 'Lowest' Unable to find a version of 'Xamarin.Android.Arch.Core.Common' that is compatible with 'Xamarin.Android.Arch.Core.Runtime 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)', 'Xamarin.Android.Arch.Lifecycle.LiveData 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)', 'Xamarin.Android.Arch.Lifecycle.LiveData.Core 1.1.1.2 constraint: Xamarin.Android.Arch.Core.Common (= 1.1.1.2)'.

If we updated to one package that packages depends on others, it's like looping for all packages.

Screenshot 2023-01-24 at 12 08 57 PM

SakthivelCapgemini avatar Jan 24 '23 06:01 SakthivelCapgemini

Found this project, seems like someone lost patience with this repo and created updated bindings.

https://www.nuget.org/packages/Xam.Facebook.Login.Android

This issue does not happen with this nuget.

czmirek avatar Dec 08 '23 07:12 czmirek

We can use this library now on Facebook Audience Network SDK for .NET for Android Anjo.Android.Facebook.AudienceNetwork (>= 6.16.0) and for login Anjo.Android.Facebook (>= 16.2.0)

mhdwaelanjo avatar Feb 28 '24 13:02 mhdwaelanjo