Android 安卓&x2B;Facebook Connect在发布版本中不工作

Android 安卓&x2B;Facebook Connect在发布版本中不工作,android,facebook,proguard,Android,Facebook,Proguard,我有一个Android应用程序,允许用户连接到他的Facebook帐户,并自动在他的墙上发表帖子 所有这些都与调试构建完美配合(使用回退webview对话框或本机应用程序活动)。我正在使用最新的用于Android的Facebook Connect API 在测试应用程序的发布版本时,我注意到fallback webview对话框不允许连接到Facebook(输入用户名/密码后,它会显示一个标准404页面,表示找不到页面fbconnect:/success/#access_token=321354

我有一个Android应用程序,允许用户连接到他的Facebook帐户,并自动在他的墙上发表帖子

所有这些都与调试构建完美配合(使用回退webview对话框或本机应用程序活动)。我正在使用最新的用于Android的Facebook Connect API

在测试应用程序的发布版本时,我注意到fallback webview对话框不允许连接到Facebook(输入用户名/密码后,它会显示一个标准404页面,表示找不到页面fbconnect:/success/#access_token=3213546…)

我怀疑proguard已经删除了一些代码,但我无法确定是什么导致了问题。谁能给我一些线索,让我朝正确的方向走

我的proguard.cfg文件包含以下几行内容,以保持Facebook Connect的独立性:

-keep class com.facebook.android.*
-keepclassmembers public class com.facebook.android.Facebook { 
    public static final *; 
}

在usage.txt中,我可以看到facebook类、字符串成员,…

我用以下规则修复了它(但是我不是专家,所以可能会有错误)

-保留com.facebook.android类*
-保留类android.webkit.WebViewClient
-keep class*扩展了android.webkit.WebViewClient
-keepclassmembers类*扩展了android.webkit.WebViewClient{
; 
} 

这是我使用facebook sdk 3.0唯一有效的方法:

-keepattributes Signature

-dontwarn com.facebook.**

-dontwarn com.parse.**

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

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

(从中获取)

我获取的错误网页不可用fbconnect://success#access_token=...
当使用连接到facebook的现有应用程序(绘制某物)时。当我卸载我在手机上安装的两个不同的facebook应用程序(Android 4.1.2版本的Galaxy note 2)并重新安装当前的facebook应用程序时,问题就消失了。

要使facebookConnect与Android发布版本一起工作,您需要创建一个对密钥库文件的引用,该文件已用于签署应用程序

在mac上:

keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64

赢:

keytool-exportcert-alias-keystore | openssl sha1-binary | openssl base64


输出应该在Facebook设置的
Android->Key Hashes
中设置

我似乎也遇到了类似的问题。。。日志显示了一些关于com.facebook.android.fdialog(模糊)和android.webkit.WebViewClient的信息。我也不是ProGuard方面的专家!有人能确认这些规则是正确的(不是过分的)?这样行吗-保持公共类com.facebook.*{*;}这种方法还可以停止proguard对仅从WebView中的JavaScript调用的JavaScript接口方法的攻击。否则,proguard将删除Java接口方法,导致WebView的JavaScript找不到要调用到Java中的方法。比如说,该程序将在Eclipse下完美地工作,但在构建以供发布时将无声地失败。这一回答避免了无数个小时的挫折。
-keepattributes Signature

-dontwarn com.facebook.**

-dontwarn com.parse.**

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

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