Reputation: 2106
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
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