我正在使用带有 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/