Facebook SDK 4.7.0 журналы ClassNotFoundException для AppEventsLogger
Я включил FB SDK в свое приложение для Android через Gradle для входа и отслеживания событий. Вход в систему работает нормально, но logcat продолжает показывать мне исключение каждые 15 секунд после попытки регистрации события приложения:
D/com.facebook.appevents.AppEventsLogger: Got unexpected exception: java.lang.ClassNotFoundException: com.facebook.a.b
Он попадает в
Метод readAndClearStore() PersistedEvents
Здесь мой код для регистрации события:
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 для его работы. Эта ошибка также показывает, когда я не уменьшаю мое приложение, а также загружаю sdk из github и включаю его в качестве модуля.
Ответы
Ответ 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 для Android Android SDK. Инструкции по Proguard см. В разделе "Сайт проекта Android", "Запуск ProGuard".
После просмотра того, что заставило не регистрировать какие-либо из моих событий в среде релиза, я добавил следующее правило в свой файл proguard и затем волшебным образом начал работать хорошо:
-keep class com.facebook.** { *; }
Мы уже открываем билет для команды разработчиков facebook, чтобы получить дополнительную информацию об этом. https://developers.facebook.com/bugs/250752828645777/
Ответ 2
Использовать в 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.