android - Facebook 和 Proguard 错误

标签 android facebook android-studio gradle proguard

我正在使用带有 proguard 的 Android Studio。我的应用程序使用 Facebook,我无法在我的 gradle 文件中使用这些设置进行构建:

minifyEnabled true

shrinkResources true

我收到多个错误:
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 是接口(interface),com.facebook.Session.NewPermissionsRequest 是公共(public)静态最终类

我已经添加了
-keepattributes Signature


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

到我的 proguard 文件,但它没有帮助。 StatusCallback 在我的 fragment 之一中定义,如下所示:
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);
        }

    }
};

我该如何解决这个问题?

最佳答案

我设法使它与这些proguard规则一起工作:

-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(...);
}

关于android - Facebook 和 Proguard 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583037/

相关文章:

javascript - 无法编译android cocos2d文件--Android-Studio

android - 如何将测试文件夹添加到较旧的 Android Studio 项目

android - 加快 iPad 应用程序向 Android 的移植

iOS Xcode 8.3 Facebook SDK 登录错误

java - 通过外部 java 类更新 TextView

facebook - Grails:运行 war 和运行应用程序之间的行为差​​异

android - 清空 Facebook FriendPickerFragment

android - 无法解析 : com. facebook.android :facebook-android-sdk:4. 0.0

android - GSON解析android

android - 如何在android studio中导入facebook sdk?