Ошибки при инициализации Flurry для Android
Я использую FlurryAnalytics-5.5.0.jar. Когда я инициализирую Flurry, я получаю несколько ошибок:
FlurryAgent.setLogEnabled(true);
FlurryAgent.setLogEvents(true);
FlurryAgent.setLogLevel(android.util.Log.ERROR);
FlurryAgent.init(this, FLURRY_ID);
Ошибки:
Не удалось найти класс com.flurry.sdk.br, на который ссылается метод com.flurry.sdk.bq.a
а также
Возникла проблема с библиотекой сервисов Google Play, которая требуется для поддержки идентификатора рекламы Android. Библиотека Google Play Services должна быть интегрирована в любое приложение, поставляемое в магазине Play Store, которое использует аналитику или рекламу.
Вы могли бы посоветовать?
2 ответа
Эта проблема возникает из-за того, что Сервисы Google Play не настроены. Убедитесь, что в конфигурации вашего проекта не пропущены все зависимости ядра play-services.
В моем случае я решил эту проблему, добавив следующую зависимость в файл конфигурации build.gradle (уровень приложения):
compile 'com.google.android.gms:play-services-base:8.4.0'
Точные строки ошибки logcat:
E/FlurryAgent: Исключение для сервисов GOOGLE PLAY: com.google.android.gms.common.Google Play ServicesUtil
E/FlurryAgent: Существует проблема с библиотекой сервисов Google Play, которая требуется для поддержки идентификатора рекламы Android. Библиотека Google Play Services должна быть интегрирована в любое приложение, поставляемое в магазине Play Store, которое использует аналитику или рекламу.
и класс GooglePlaySercicesUtil находится в библиотеке базы play-services.
Надеюсь это поможет.
Смотрите ссылки это и это для получения дополнительной информации.
Если вы используете Proguard, страница руководства Flurry сообщает, что необходимо добавить следующие строки в ваш файл конфигурации Proguard:
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
# Google Play Services library
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
#If you are using the Google Mobile Ads SDK, add the following:
# Preserve GMS ads classes
-keep class com.google.android.gms.ads.** { *;
}
-dontwarn com.google.android.gms.ads.**
#If you are using the InMobi SDK, add the following:
# Preserve InMobi Ads classes
-keep class com.inmobi.** { *;
}
-dontwarn com.inmobi.**
#If you are using the Millennial Media SDK, add the following:
# Preserve Millennial Ads classes
-keep class com.millennialmedia.** { *;
}
-dontwarn com.millennialmedia.**
Также взгляните на этот ответ.