Kasper Finne Nielsen
Kasper Finne Nielsen

Reputation: 2106

Facebook and Proguard error

I am using Android Studio with proguard. My app uses Facebook and I am not able to build with these settings on in my gradle file:

minifyEnabled true

shrinkResources true

I get multiple errors:

Error:(59, 29) error: cannot find symbol class StatusCallback

Error:(169, 76) error: cannot find symbol class GraphUserCallback

Error:(65, 41) error: cannot find symbol class NewPermissionsRequest

Error:(162, 76) error: cannot find symbol class GraphUserCallback

Error:(681, 41) error: cannot find symbol class NewPermissionsRequest

com.facebook.Session.StatusCallback, com.facebook.Request.GraphUserCallback is Interfaces and com.facebook.Session.NewPermissionsRequest is a public static final class

I have added

-keepattributes Signature

and

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

To my proguard file but it does not help. StatusCallback is defined in one of my fragments like this:

public com.facebook.Session.StatusCallback mFacebookCallback = new com.facebook.Session.StatusCallback() {
    @Override
    public void call(com.facebook.Session session, com.facebook.SessionState state, Exception exception) {
        if (mFacebookFetchEmail || mLoginWithFacebookClicked) {
            onSessionStateChange(session, state, exception);
        }

    }
};

How can I solve this?

Upvotes: 0

Views: 568

Answers (1)

Kasper Finne Nielsen
Kasper Finne Nielsen

Reputation: 2106

I managed to make it work with these proguard rules:

-keepattributes JavascriptInterface
-keepattributes Signature
-dontwarn com.facebook.android.BuildConfig
-keepattribute InnerClasses

-keepattributes SourceFile,LineNumberTable

-dontwarn com.squareup.picasso.**
-keepclasseswithmembernames class * {
    native <methods>;
}

-keepattributes *Annotation*

#modify for Facebook
-keep class com.facebook.** {
   *;
}
-keep public class com.facebook.Session$StatusCallback
-keepclassmembers class com.facebook.Session$StatusCallback {
   public *;
}
-keep public class * implements com.facebook.Session$StatusCallback


-dontskipnonpubliclibraryclasses


-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

Upvotes: 1

Related Questions