Facebook Android SDK 5.4.0 更新后导致 ANR 问题

3

从Facebook SDK版本4.40.0更新到5.4.0后,我的应用程序遇到了大量ANR问题。一天内出现了12k个ANR错误,用户甚至无法打开应用程序。

完整堆栈跟踪:

"main" prio=5 tid=1 Waiting
  | group="main" sCount=1 dsCount=0 obj=0x7496b268 self=0xb2c84400
  | sysTid=8451 nice=0 cgrp=default sched=0/0 handle=0xb5b72534
  | state=S schedstat=( 0 0 0 ) utm=12 stm=7 core=2 HZ=100
  | stack=0xbe6c2000-0xbe6c4000 stackSize=8MB
  | held mutexes=
  at java.lang.Object.wait (Native method)
- waiting on <0x047bbe7f> (a java.lang.Object)
  at java.lang.Thread.parkFor$ (Thread.java:2127)
- locked <0x047bbe7f> (a java.lang.Object)
  at sun.misc.Unsafe.park (Unsafe.java:325)
  at java.util.concurrent.locks.LockSupport.park (LockSupport.java:161)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:840)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly (AbstractQueuedSynchronizer.java:994)
  at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1303)
  at java.util.concurrent.CountDownLatch.await (CountDownLatch.java:203)
  at com.facebook.internal.LockOnGetVariable.waitOnInit (LockOnGetVariable.java:64)
  at com.facebook.internal.LockOnGetVariable.getValue (LockOnGetVariable.java:54)
  at com.facebook.FacebookSdk.getCacheDir (FacebookSdk.java:954)
  at com.facebook.internal.instrument.InstrumentUtility.getInstrumentReportDir (InstrumentUtility.java:242)
  at com.facebook.internal.instrument.InstrumentUtility.listCrashReportFiles (InstrumentUtility.java:124)
  at com.facebook.internal.instrument.crashreport.CrashHandler.sendCrashReports (CrashHandler.java:101)
  at com.facebook.internal.instrument.crashreport.CrashHandler.enable (CrashHandler.java:73)
- locked <0x01f4fe4c> (a java.lang.Class<com.facebook.internal.instrument.crashreport.CrashHandler>)
  at com.facebook.internal.instrument.InstrumentManager.start (InstrumentManager.java:46)
  at com.facebook.FacebookSdk.sdkInitialize (FacebookSdk.java:326)
- locked <0x05939e95> (a java.lang.Class<com.facebook.FacebookSdk>)
  at com.facebook.marketing.internal.MarketingInitProvider.onCreate (MarketingInitProvider.java:42)
  at android.content.ContentProvider.attachInfo (ContentProvider.java:1753)
  at android.content.ContentProvider.attachInfo (ContentProvider.java:1728)
  at android.app.ActivityThread.installProvider (ActivityThread.java:6066)
  at android.app.ActivityThread.installContentProviders (ActivityThread.java:5658)
  at android.app.ActivityThread.handleBindApplication (ActivityThread.java:5597)
  at android.app.ActivityThread.-wrap2 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1614)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6351)
  at java.lang.reflect.Method.invoke! (Native method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:896)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:786)
"GoogleApiHandler" tid=22 Native 
"GoogleApiHandler" prio=5 tid=22 Native
  | group="main" sCount=1 dsCount=0 obj=0x22c0caf0 self=0xab5c6700
  | sysTid=8512 nice=9 cgrp=default sched=0/0 handle=0x95332920
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=1 HZ=100
  | stack=0x95230000-0x95232000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000048e38  /system/lib/libc.so (__epoll_pwait+20)
  #01  pc 000000000001a291  /system/lib/libc.so (epoll_pwait+60)
  #02  pc 000000000001a2c1  /system/lib/libc.so (epoll_wait+12)
  #03  pc 0000000000011e77  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+118)
  #04  pc 0000000000011d73  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+26)
  #05  pc 0000000000096fbd  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+22)
  #06  pc 000000000067f0a5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+96)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:323)
  at android.os.Looper.loop (Looper.java:136)
  at android.os.HandlerThread.run (HandlerThread.java:61)
"TokenRefresher" tid=23 Native 
"TokenRefresher" prio=5 tid=23 Native
  | group="main" sCount=1 dsCount=0 obj=0x22c0cb80 self=0xab5c5d00
  | sysTid=8513 nice=10 cgrp=bg_non_interactive sched=0/0 handle=0x9573c920
  | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=2 HZ=100
  | stack=0x9563a000-0x9563c000 stackSize=1038KB
  | held mutexes=
  #00  pc 0000000000048e38  /system/lib/libc.so (__epoll_pwait+20)
  #01  pc 000000000001a291  /system/lib/libc.so (epoll_pwait+60)
  #02  pc 000000000001a2c1  /system/lib/libc.so (epoll_wait+12)
  #03  pc 0000000000011e77  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+118)
  #04  pc 0000000000011d73  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+26)
  #05  pc 0000000000096fbd  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+22)
  #06  pc 000000000067f0a5  /system/framework/arm/boot-framework.oat (Java_android_os_MessageQueue_nativePollOnce__JI+96)
  at android.os.MessageQueue.nativePollOnce (Native method)
  at android.os.MessageQueue.next (MessageQueue.java:323)
  at android.os.Looper.loop (Looper.java:136)
  at android.os.HandlerThread.run (HandlerThread.java:61)

我已经降级到版本4.40.0,问题已得到解决,但Facebook不断发送提醒要更新SDK,该如何解决?我失去了数千个用户和多条负面评论。


请添加完整的堆栈跟踪并附上导致问题的代码。 - Ernest Zamelczyk
我更新了完整的堆栈跟踪。没有项目代码参考,它只是冻结打开。我只是使用Facebook SDK通过Firebase集成登录Facebook,但自动开始收集来自Facebook Analytics的数据,我怀疑问题与此有关。 - Henrique Monte
如果是默认的Facebook分析/日志记录,您可以将其关闭。请参考以下链接:https://dev59.com/oVkS5IYBdhLWcg3wV1dy - TheAnkush
你需要 SDK 的哪些组件(登录、分享、核心...)?请在问题中附上您使用 Facebook SDK 中任何 API 的代码,以及您如何在 gradle 中编写依赖项。 - denis_lor
这也在Facebook问题跟踪器中报告了:https://developers.facebook.com/support/bugs/1398287143658627/,也许可以考虑在那里分享并投票支持。 - Yakuza
显示剩余6条评论
1个回答

2

1
Facebook犯了一个大错误!我有很多ANR报告都是因为他们。 - Roberto
1
我们这里也度过了糟糕的一周。出现了有史以来最多的应用程序报告,并且仍在使用旧版本且未升级的用户继续产生大量错误。 - Henrique Monte

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接