Facebook SDK 4.7.0记录AppEventsLogger的ClassNotFoundException

24

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

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

它会被抛入PersistedEvents的readAndClearStore()方法

以下是我的用于记录事件的代码:

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看起来像是一个proguard问题。但在FB SDK文档中,他们明确表示您无需输入任何proguard规则即可使用它。当我不对我的应用程序进行混淆时,也会出现此错误,如果我从GitHub下载SDK并将其作为模块包含,则也会出现此错误。


这些日志是来自发布版的应用程序吗?还是调试版的? - user2511882
但是如果你为fb sdk逃避proguard,它是否有效?-keep class com.facebook.** { *; } - Vrashabh Irde
你在哪里指定了最小化选项?你是如何禁用它的?显然它没有起作用。缺失的类被 AppEventsLogger 使用,当它每 15 秒尝试记录事件(如果有的话)。 - Vaishak Nair
就在这里补充一下:某个时候它开始自己正常工作了,而我并没有做任何改变,所以我没有再进一步调查。真是奇怪的问题。从点赞数来看,似乎也困扰了其他人.. :/ - Till - Appviewer.io
将最新的facebooksdk更新到您的Android应用程序中(Facebook Sdk的最新版本为(4.16.1))。 - Srinivas Keerthiprakasam
2个回答

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

在他们的文档中,他们说:

您无需执行任何其他步骤即可使用ProGuard来保护Facebook Android SDK。有关Proguard的说明,请参见Android Tools Project Site,Running ProGuard。

在查找导致在发布环境中未记录任何事件的原因后,我将以下规则添加到我的proguard文件中,然后神奇地开始正常工作:

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

我们已经向Facebook开发团队提交了一张工单,以获取更多关于此事的信息。https://developers.facebook.com/bugs/250752828645777/

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。


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