Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flurry integrations with Android App gives an error "Could not find class 'com.flurry.sdk.i', referenced from method com.flurry.sdk.hu.a"

This is what I've tried so far:

public class ScoreUpApp extends Application {
private static ScoreUpApp scoreUpDataCache;
public static final String TAG = "MyApp";

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    // configure Flurry
    FlurryAgent.setLogEnabled(true);
    // init Flurry
    FlurryAgent.init(this, "V88JVYGFF7QX5D9RYZG2");

}
}

This is what the error I get in Logcat:

03-17 14:06:41.924: E/dalvikvm(30175): Could not find class 'com.flurry.sdk.i', referenced from method com.flurry.sdk.hu.a

03-17 14:31:36.694: W/dalvikvm(31798): VFY: unable to resolve const-class 2065 (Lcom/flurry/sdk/i;) in Lcom/flurry/sdk/hu;

Thank you.

like image 249
Anudeep Avatar asked Mar 17 '15 08:03

Anudeep


1 Answers

This warning/error message will happen if you are using just the FlurryAnalytics-X.X.X.jar without the FlurryAds-X.X.X.jar. If you are not interested in the ads, you can just ignore the error as it's just an internal error to the SDK and will not affect your app.

However, if you have already included the ads library as a dependency and you are still seeing this error, it is because Proguard is stripping away the required classes. Make sure your Proguard config has at least the following:

-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.**
like image 119
ugo Avatar answered Nov 04 '22 03:11

ugo