facebook-sdk-for-unity
facebook-sdk-for-unity copied to clipboard
Unity SDK v11/12/13 Login crashes on Android 12 - (1) Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE - or - (2) JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception
Checklist
- [x] I've updated to the latest released version of the SDK
- [x] I've searched for existing GitHub issues
- [x] I've looked for existing answers on Stack Overflow, the Facebook Developer Community Forum and the Facebook Developers Group
- [x] I've read the Code of Conduct
- [x] This issue is not security related and can safely be disclosed publicly on GitHub
Environment
- Unity Editor Version:
2018 LTS,2019 LTS,2020 LTS,2021 LTS - Unity SDK Version:
11.0,12.0,13.2 - Installation Platform & Version:
Androidversion12API31
Goals
I want to login into Facebook on Android 12 in my app compiled for API 31.
Expected Results
The app should not crash after you return from FB overlay after you login.
Actual Results
When I am trying to login, after Facebook login overlay hides, the app crashes. Please see Crash Log #1 below.
Related Issues
Similar issue seems was fixed in FB Android SDK versions 11.3.0+, however, FB Unity SDK v11 does not have this fix; and it is impossible to update native libraries (see below). https://github.com/facebook/facebook-android-sdk/issues/997
Steps to Reproduce
- Create new empty Unity project
- Import Facebook Unity SDK v11 unitypackage
- Make sure you have a button with either
FB.LogInWithReadPermissionsorFB.LogInWithPublishPermissions - Setup and build the sample app with
CompileSdkVersion 31andTargetSdkVersion 31for Android - Run the app on Android 12 device or emulator
- Initialize FB
- Log out (if was logged in)
- Log in with either
FB.LogInWithReadPermissionsorFB.LogInWithPublishPermissions - FB overlay shows, enter name/password, and proceed
- FB overlay hides
- The app crashes!
Code Samples & Details
Use sample app code as the base from FB Unity SDK unitypackage v11.
Login button which calls either FB.LogInWithReadPermissions or FB.LogInWithPublishPermissions
// 1
FB.LogInWithReadPermissions(new[] { "email" }, this.HandleResult);
// 2
FB.LogInWithPublishPermissions(null, this.HandleResult);
Build.gradle file modification to build for Android 12
android {
compileSdkVersion 31
defaultConfig {
targetSdkVersion 31
Attempts to fix
- First, I tried to update android sdk manually in gradle file like this:
dependencies {
implementation(name: 'facebook-android-wrapper-11.0.0', ext:'aar')
implementation 'com.facebook.android:facebook-core:11.3.0'
implementation 'com.facebook.android:facebook-login:11.3.0'
implementation 'com.facebook.android:facebook-share:11.3.0'
implementation 'com.facebook.android:facebook-messenger:11.3.0'
implementation 'com.facebook.android:facebook-applinks:11.3.0'
implementation 'com.facebook.android:facebook-android-sdk:11.3.0'
It now crashes with JNI exception, please see Crash Log #2 below.
-
Then, I tried versions
12.0.0,12.3.0,13.0.0. No luck. The sameCrash Log #2appears. -
Also, I noticed you have FB Unity SDK tagged
sdk-version-12.0.0here (but not released on the official website). So I tried to locally build FB Unity Android wrapper v12 and FB Unity SDK from thesdk-version-12.0.0. No luck, the sameCrash Log #2. -
The issue persists with newer releases Unity SDK v13.2 and native SDK v14+.
I would be grateful to know when the fix will be release or steps to fix for manual build are provided. Thank you.
Crash logs
Crash log # 1 - FB Unity SDK v11 + FB Android SDK v11.0.0
2022-04-27 23:48:40.218 19025-19025/com.my.app D/AndroidRuntime: Shutting down VM
2022-04-27 23:48:40.227 19025-19025/com.my.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.my.app, PID: 19025
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=64206, result=-1, data=Intent { (has extras) }} to activity {com.my.app/com.facebook.unity.FBUnityLoginActivity}: java.lang.IllegalArgumentException: com.my.app: 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.ActivityThread.deliverResults(ActivityThread.java:5301)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:5340)
at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2210)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: java.lang.IllegalArgumentException: com.my.app: 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:108)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:81)
at com.facebook.AccessTokenManager.setCurrentAccessToken(AccessTokenManager.kt:49)
at com.facebook.AccessToken$Companion.setCurrentAccessToken(AccessToken.kt:402)
at com.facebook.AccessToken.setCurrentAccessToken(Unknown Source:2)
at com.facebook.login.LoginManager.finishLogin(LoginManager.java:745)
at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:244)
at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:183)
at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.kt:44)
at com.facebook.unity.BaseActivity.onActivityResult(BaseActivity.java:51)
at android.app.Activity.dispatchActivityResult(Activity.java:8382)
at android.app.ActivityThread.deliverResults(ActivityThread.java:5294)
... 13 more
2022-04-27 23:48:40.275 19025-19025/com.my.app I/Process: Sending signal. PID: 19025 SIG: 9
Crash log # 2 - FB Unity SDK v11 + FB Android SDK v11.3.0 (or higher, e.g., 12.0.0, 12.3.0, 13.0.0)
2022-04-27 16:24:13.017 7664-7740/com.my.app A/myapp: java_vm_ext.cc:579] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception java.lang.SecurityException: listen
java_vm_ext.cc:579] at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
java_vm_ext.cc:579] at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
java_vm_ext.cc:579] at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
java_vm_ext.cc:579] at void android.os.Parcel.readException() (Parcel.java:2334)
java_vm_ext.cc:579] at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
java_vm_ext.cc:579] at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
java_vm_ext.cc:579] at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
java_vm_ext.cc:579] at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
java_vm_ext.cc:579] at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
java_vm_ext.cc:579] at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
java_vm_ext.cc:579] at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
java_vm_ext.cc:579] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
java_vm_ext.cc:579] at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
java_vm_ext.cc:579] at void android.os.Looper.loop() (Looper.java:288)
java_vm_ext.cc:579] at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
java_vm_ext.cc:579] Caused by: android.os.RemoteException: Remote stack trace:
java_vm_ext.cc:579] at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
java_vm_ext.cc:579] at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
java_vm_ext.cc:579] at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
java_vm_ext.cc:579] at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
java_vm_ext.cc:579] at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
java_vm_ext.cc:579]
java_vm_ext.cc:579] (Throwable with no stack trace)
java_vm_ext.cc:579]
java_vm_ext.cc:579] in call to CallVoidMethodA
java_vm_ext.cc:579] from boolean com.unity3d.player.UnityPlayer.nativeRender()
2022-04-27 16:24:13.359 7664-7740/com.my.app A/myapp: runtime.cc:669] Runtime aborting...
runtime.cc:669] Dumping all threads without mutator lock held
runtime.cc:669] All threads:
runtime.cc:669] DALVIK THREADS (34):
runtime.cc:669] "UnityMain" prio=5 tid=30 Runnable
runtime.cc:669] | group="" sCount=0 ucsCount=0 flags=0 obj=0x132c1688 self=0x7376eae6ea80
runtime.cc:669] | sysTid=7740 nice=0 cgrp=top-app sched=0/0 handle=0x737507239cf0
runtime.cc:669] | state=R schedstat=( 16706654905 627949092 5162 ) utm=800 stm=870 core=3 HZ=100
runtime.cc:669] | stack=0x737507137000-0x737507139000 stackSize=1035KB
runtime.cc:669] | held mutexes= "abort lock" "mutator lock"(shared held)
runtime.cc:669] native: #00 pc 000000000073cd7f /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+127)
runtime.cc:669] native: #01 pc 0000000000882570 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+368)
runtime.cc:669] native: #02 pc 00000000008a32fa /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+1082)
runtime.cc:669] native: #03 pc 000000000089c1ac /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+220)
runtime.cc:669] native: #04 pc 000000000089b41b /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1723)
runtime.cc:669] native: #05 pc 000000000082271f /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2319)
runtime.cc:669] native: #06 pc 00000000000194ac /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+60)
runtime.cc:669] native: #07 pc 0000000000018ac0 /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352)
runtime.cc:669] native: #08 pc 000000000061c595 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2741)
runtime.cc:669] native: #09 pc 000000000061c5f5 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, __va_list_tag*)+85)
runtime.cc:669] native: #10 pc 000000000060da9f /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+191)
runtime.cc:669] native: #11 pc 000000000060c114 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+3380)
runtime.cc:669] native: #12 pc 000000000060aab1 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+705)
runtime.cc:669] native: #13 pc 000000000061070d /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+157)
runtime.cc:669] native: #14 pc 00000000006112b5 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodA(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, jvalue const*, art::Primitive::Type, art::InvokeType)+869)
runtime.cc:669] native: #15 pc 00000000005fdb4e /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue const*) (.llvm.6737952066654626722)+30)
runtime.cc:669] native: #16 pc 00000000001498af /system/lib64/libndk_translation.so (ndk_translation::(anonymous namespace)::DoTrampoline_JNIEnv_CallVoidMethodV(void const*, ndk_translation::ProcessState*)+111)
2022-04-27 16:24:13.359 7664-7740/com.my.app A/myapp: runtime.cc:669] native: #17 pc 00000000001bb803 <anonymous:737512612000> (???)
runtime.cc:669] at com.unity3d.player.UnityPlayer.nativeRender(Native method)
runtime.cc:669] at com.unity3d.player.UnityPlayer.access$300(unavailable:-1)
runtime.cc:669] at com.unity3d.player.UnityPlayer$e$1.handleMessage(unavailable:-1)
runtime.cc:669] at android.os.Handler.dispatchMessage(Handler.java:102)
runtime.cc:669] at android.os.Looper.loopOnce(Looper.java:201)
runtime.cc:669] at android.os.Looper.loop(Looper.java:288)
runtime.cc:669] at com.unity3d.player.UnityPlayer$e.run(unavailable:-1)
runtime.cc:669]
runtime.cc:669] "main" prio=10 tid=1 Native
runtime.cc:669] | group="" sCount=1 ucsCount=0 flags=1 obj=0x7176a578 self=0x7376eae16010
runtime.cc:669] | sysTid=7664 nice=-10 cgrp=top-app sched=0/0 handle=0x7378385e64f8
runtime.cc:669] | state=S schedstat=( 4111371823 455355693 1531 ) utm=171 stm=239 core=3 HZ=100
runtime.cc:669] | stack=0x7fffd8803000-0x7fffd8805000 stackSize=8188KB
runtime.cc:669] | held mutexes=
runtime.cc:669] native: #00 pc 000000000005adf6 /apex/com.android.runtime/lib64/bionic/libc.so (syscall+22)
runtime.cc:669] native: #01 pc 0000000000425c9e /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+110)
runtime.cc:669] native: #02 pc 0000000000957ac1 /apex/com.android.art/lib64/libart.so (art::GoToRunnable(art::Thread*)+401)
runtime.cc:669] native: #03 pc 00000000009578ff /apex/com.android.art/lib64/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+15)
runtime.cc:669] at android.graphics.HardwareRenderer.nSyncAndDrawFrame(Native method)
runtime.cc:669] at android.graphics.HardwareRenderer.syncAndDrawFrame(HardwareRenderer.java:457)
runtime.cc:669] at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:634)
runtime.cc:669] at android.view.ViewRootImpl.draw(ViewRootImpl.java:4421)
runtime.cc:669] at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4149)
runtime.cc:669] at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3309)
runtime.cc:669] at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2126)
runtime.cc:669] at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8653)
runtime.cc:669] at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
runtime.cc:669] at android.view.Choreographer.doCallbacks(Choreographer.java:845)
runtime.cc:669] at android.view.Choreographer.doFrame(Choreographer.java:780)
runtime.cc:669] at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
runtime.cc:669] at android.os.Handler.handleCallback(Handler.java:938)
runtime.cc:669] at android.os.Handler.dispatchMessage(Handler.java:99)
runtime.cc:669] at android.os.Looper.loopOnce(Looper.java:201)
runtime.cc:669] at android.os.Looper.loop(Looper.java:288)
runtime.cc:669] at android.app.ActivityThread.main(ActivityThread.java:7839)
runtime.cc:669] at java.lang.reflect.Method.invoke(Native method)
runtime.cc:669] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
runtime.cc:669] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
[...]
runtime.cc:669] Aborting thread:
runtime.cc:669] "UnityMain" prio=5 tid=30 Native
runtime.cc:669] | group="" sCount=0 ucsCount=0 flags=0 obj=0x132c1688 self=0x7376eae6ea80
runtime.cc:669] | sysTid=7740 nice=0 cgrp=top-app sched=0/0 handle=0x737507239cf0
runtime.cc:669] | state=R schedstat=( 16833195185 685394840 5329 ) utm=804 stm=878 core=0 HZ=100
runtime.cc:669] | stack=0x737507137000-0x737507139000 stackSize=1035KB
runtime.cc:669] | held mutexes= "abort lock"
runtime.cc:669] native: #00 pc 000000000073cd7f /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+127)
2022-04-27 16:24:13.360 7664-7740/com.my.app A/myapp: runtime.cc:669] native: #01 pc 0000000000882570 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+368)
runtime.cc:669] native: #02 pc 000000000083a2b9 /apex/com.android.art/lib64/libart.so (art::AbortState::DumpThread(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Thread*) const+57)
runtime.cc:669] native: #03 pc 0000000000822802 /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+2546)
runtime.cc:669] native: #04 pc 00000000000194ac /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+60)
runtime.cc:669] native: #05 pc 0000000000018ac0 /apex/com.android.art/lib64/libbase.so (android::base::LogMessage::~LogMessage()+352)
runtime.cc:669] native: #06 pc 000000000061c595 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+2741)
runtime.cc:669] native: #07 pc 000000000061c5f5 /apex/com.android.art/lib64/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, __va_list_tag*)+85)
runtime.cc:669] native: #08 pc 000000000060da9f /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::AbortF(char const*, ...)+191)
runtime.cc:669] native: #09 pc 000000000060c114 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+3380)
runtime.cc:669] native: #10 pc 000000000060aab1 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+705)
runtime.cc:669] native: #11 pc 000000000061070d /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+157)
runtime.cc:669] native: #12 pc 00000000006112b5 /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodA(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, jvalue const*, art::Primitive::Type, art::InvokeType)+869)
runtime.cc:669] native: #13 pc 00000000005fdb4e /apex/com.android.art/lib64/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue const*) (.llvm.6737952066654626722)+30)
runtime.cc:669] native: #14 pc 00000000001498af /system/lib64/libndk_translation.so (ndk_translation::(anonymous namespace)::DoTrampoline_JNIEnv_CallVoidMethodV(void const*, ndk_translation::ProcessState*)+111)
runtime.cc:669] native: #15 pc 00000000001bb803 <anonymous:737512612000> (???)
runtime.cc:669] at com.unity3d.player.UnityPlayer.nativeRender(Native method)
runtime.cc:669] at com.unity3d.player.UnityPlayer.access$300(unavailable:-1)
runtime.cc:669] at com.unity3d.player.UnityPlayer$e$1.handleMessage(unavailable:-1)
runtime.cc:669] at android.os.Handler.dispatchMessage(Handler.java:102)
runtime.cc:669] at android.os.Looper.loopOnce(Looper.java:201)
runtime.cc:669] at android.os.Looper.loop(Looper.java:288)
runtime.cc:669] at com.unity3d.player.UnityPlayer$e.run(unavailable:-1)
runtime.cc:669] Pending exception java.lang.SecurityException: listen
runtime.cc:669] at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
runtime.cc:669] at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
runtime.cc:669] at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
runtime.cc:669] at void android.os.Parcel.readException() (Parcel.java:2334)
2022-04-27 16:24:13.360 7664-7740/com.my.app A/myapp: runtime.cc:669] at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
runtime.cc:669] at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
runtime.cc:669] at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
runtime.cc:669] at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
runtime.cc:669] at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
runtime.cc:669] at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
runtime.cc:669] at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
runtime.cc:669] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
runtime.cc:669] at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
runtime.cc:669] at void android.os.Looper.loop() (Looper.java:288)
runtime.cc:669] at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
runtime.cc:669] Caused by: android.os.RemoteException: Remote stack trace:
runtime.cc:669] at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
runtime.cc:669] at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
runtime.cc:669] at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
runtime.cc:669] at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
runtime.cc:669] at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
runtime.cc:669]
runtime.cc:669] (Throwable with no stack trace)
runtime.cc:669]
2022-04-27 16:24:13.361 7664-7740/com.my.app A/myapp: runtime.cc:677] JNI DETECTED ERROR IN APPLICATION: JNI CallVoidMethodA called with pending exception java.lang.SecurityException: listen
runtime.cc:677] at java.lang.Exception android.os.Parcel.createExceptionOrNull(int, java.lang.String) (Parcel.java:2425)
runtime.cc:677] at java.lang.Exception android.os.Parcel.createException(int, java.lang.String) (Parcel.java:2409)
runtime.cc:677] at void android.os.Parcel.readException(int, java.lang.String) (Parcel.java:2392)
runtime.cc:677] at void android.os.Parcel.readException() (Parcel.java:2334)
runtime.cc:677] at void com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy.listenWithEventList(int, java.lang.String, java.lang.String, com.android.internal.telephony.IPhoneStateListener, int[], boolean) (ITelephonyRegistry.java:1036)
runtime.cc:677] at void android.telephony.TelephonyRegistryManager.listenFromListener(int, java.lang.String, java.lang.String, android.telephony.PhoneStateListener, int, boolean) (TelephonyRegistryManager.java:250)
runtime.cc:677] at void android.telephony.TelephonyManager.listen(android.telephony.PhoneStateListener, int) (TelephonyManager.java:5999)
runtime.cc:677] at void com.unity3d.player.UnityPlayer.addPhoneCallListener() ((null):-1)
runtime.cc:677] at boolean com.unity3d.player.UnityPlayer.nativeRender() ((null):-2)
runtime.cc:677] at boolean com.unity3d.player.UnityPlayer.access$300(com.unity3d.player.UnityPlayer) ((null):-1)
runtime.cc:677] at boolean com.unity3d.player.UnityPlayer$e$1.handleMessage(android.os.Message) ((null):-1)
runtime.cc:677] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
runtime.cc:677] at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:201)
runtime.cc:677] at void android.os.Looper.loop() (Looper.java:288)
runtime.cc:677] at void com.unity3d.player.UnityPlayer$e.run() ((null):-1)
runtime.cc:677] Caused by: android.os.RemoteException: Remote stack trace:
runtime.cc:677] at com.android.internal.telephony.TelephonyPermissions.enforceCarrierPrivilege(TelephonyPermissions.java:634)
runtime.cc:677] at com.android.internal.telephony.TelephonyPermissions.checkReadPhoneState(TelephonyPermissions.java:149)
runtime.cc:677] at com.android.internal.telephony.TelephonyPermissions.checkCallingOrSelfReadPhoneState(TelephonyPermissions.java:94)
runtime.cc:677] at com.android.server.TelephonyRegistry.checkListenerPermission(TelephonyRegistry.java:3093)
runtime.cc:677] at com.android.server.TelephonyRegistry.listen(TelephonyRegistry.java:1024)
runtime.cc:677]
runtime.cc:677] (Throwable with no stack trace)
runtime.cc:677]
runtime.cc:677] in call to CallVoidMethodA
runtime.cc:677] from boolean com.unity3d.player.UnityPlayer.nativeRender()
--------- beginning of crash
2022-04-27 16:24:13.361 7664-7740/com.my.app A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 7740 (UnityMain), pid 7664 (myappd)
We've the same issue, please could you release the final 12.0.0 unity SDK ?
Hi, try to replace the content of your "Assets/FacebookSDK/Plugins/Editor/Dependencies.xml" with this: https://github.com/facebook/facebook-sdk-for-unity/blob/main/UnitySDK/Assets/FacebookSDK/Plugins/Editor/Dependencies.xml I had the same issue with PENDING_INTENT and API 31 target and this fixed it.
The issue persists in SDK v12 and v13.2 unitypackage releases.
Update: the issue was caused by a bug in Unity when it tries to enable/disable audio on app pause/resume. Fixed in the latest versions.
I went through the Unity changelogs and find this bug ticket - not sure if this is what @iyakov mentioned above, but it looks similar. (Check the version where it is applied in the ticket)
Android: Fixed an Android audio crash when targeting API Level 31 and running on an Android 12 device. Also fixed an AudioManager.GetStreamVolume exception when targeting API Level 29 or later, which caused the AudioSettings.Mobile.stopAudioOutputOnMute feature to not work correctly, if enabled. (UUM-5652)