Facebook SDK 4.7.0记录AppEventsLogger的ClassNotFoundException

时间:2015-10-17 15:05:06

标签: android facebook facebook-android-sdk facebook-sdk-4.x

我通过Gradle在我的Android应用中集成了FB SDK,用于登录和跟踪事件。登录工作正常,但是一旦我尝试记录应用程序事件,logcat每15秒就会显示一次异常:

D/com.facebook.appevents.AppEventsLogger: Got unexpected exception: java.lang.ClassNotFoundException: com.facebook.a.b

它被抛入 PersistedEvents' readAndClearStore() method

这是我记录事件的代码:

AppEventsLogger logger = AppEventsLogger.newLogger(this);
    Bundle parameters = new Bundle();
    parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "EUR");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_TYPE, "product");
    parameters.putString(AppEventsConstants.EVENT_PARAM_CONTENT_ID, id);

    logger.logEvent(AppEventsConstants.EVENT_NAME_VIEWED_CONTENT,
            1.99,
            parameters);

我的意思是com.facebook.a.b对我来说似乎是个问题。但是在FB SDK文档中,他们明确指出您不需要输入任何proguard规则来使其工作。当我不缩小我的应用程序时,以及我是否从github下载sdk并将其作为模块包含时,此错误也会显示。

2 个答案:

答案 0 :(得分:1)

我几天前在 Facebook SDK(v4.11.0)中使用记录器时遇到了类似的问题:

D/com.facebook.a.a(PID): Got unexpected exception: java.io.WriteAbortedException: Read an exception; java.io.NotSerializableException: org.json.JSONObject

documentation他们说了以下内容:

  

您不必执行任何其他步骤即可将ProGuard用于Facebook Android SDK。有关Proguard的说明,请参阅Android工具项目站点,运行ProGuard。

在查看导致我未在发布环境中记录任何事件的原因后,我将以下规则添加到我的proguard文件中,然后神奇地开始运行良好:

-keep class com.facebook.** { *; }

我们已经向facebook开发团队开了一张门票,以获得更多相关信息。 https://developers.facebook.com/bugs/250752828645777/

答案 1 :(得分:0)

在gradle中使用而不是sdk:4.11.0:

compile('com.facebook.android:facebook-android-sdk:3.23.0') {
    exclude module: 'bolts-android'
}

我也无法使用fb sdk:4.11.0登录,因为此版本的fb sdk确实提供了Facebook类的例外。使用更高版本的fb sdk,新类正在取代旧类。

即使在新的版本23中,ActionBaractivity正在进行描述,因此需要使用AppCompatActivity。