Facebook SDK 4.10上的NPE:尝试调用空对象引用上的接口方法java.lang.Object com.facebook.inject.Lazy.get()

背景

最近我们更新了Facebook SDK库到4.10(从这里 )。

以前,我们现在有同样的错误,但现在看起来更频繁。

问题

我们无法了解其发生的地点和原因。

这里是崩溃日志:

致命exception:java.lang.NullPointerException:尝试在android.os.Parcel.readException(Parcel.java:null)处的null对象引用上调用接口方法'java.lang.Object com.facebook.inject.Lazy.get() 1552)在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:190)在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)在android.content.ContentProviderProxy.query(ContentProviderNative.java:421)在android。在com.facebook.internal的com.facebook.internal.NativeProtocol.fetchAllAvailableProtocolVersionsForAppInfo(NativeProtocol.java:790)上的android.content.ContentResolver.query(ContentResolver.java:429)上的content.ContentResolver.query(ContentResolver.java:494) .NativeProtocol.access $ com(com.facebook.internal.NativeProtocol上的$ 000(NativeProtocol.java:49)$ NativeAppInfo.fetchAvailableVersions(NativeProtocol.java:281)at com.facebook.internal.NativeProtocol $ NativeAppInfo.access $ 600(NativeProtocol.java:226 )在com.facebook.internal.NativePro 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)上的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)tocol $ 1.run(NativeProtocol.java:763)。 lang.Thread.run(Thread.java:818)

而且,由于这是来自Crashlytics的报告,我也有一些统计数据:

  • 通常(90%)在魅族设备上出现,其余的在LG,三星等。
  • 通常(72%)出现在Android 5.1版本上,其他版本我们支持(4.x及以上版本)。

我试过了

我试图寻找例外,但我找不到任何甚至类似的东西。

我试图find“com.facebook.inject.Lazy”类,但是这是无处可寻的。 我什至不能find注射相关的类和回购,sdk使用正常使用。 仅用于unit testing。

我也试过去Facebook的Github网站( 这里 ),但是无处可去。

后来我发现这是在Facebook的开发者网站上报道 ,但似乎并没有被修复,也没有人知道如何处理它。

编辑:现在我已经find了这个Facebook的post ,说这可能是因为使用旧版本的Facebook应用程序,但它似乎是不正确的。

这个问题

为什么会发生? 有没有解决方法? Facebook是否为此工作?

有什么版本的Facebook SDK,这个问题不会发生?

而且,最重要的是,如何处理和修复?

请使用更新的Facebook的SDK来克服这个错误。 老sdk有一些问题。 你可以从最新的sdk下载

https://developers.facebook.com/docs/android