Android + Facebook Connect无法在发布版本中运行

时间:2011-05-24 09:31:53

标签: android facebook proguard

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

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

在测试应用程序的发布版本时,我注意到后备webview对话框不允许连接到Facebook(在输入用户名/密码后,它显示一个标准的404页面,说它无法找到页面fbconnect: /成功/#=的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类,字符串成员......

4 个答案:

答案 0 :(得分:3)

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

-keep class com.facebook.android.*
-keep class android.webkit.WebViewClient
-keep class * extends android.webkit.WebViewClient
-keepclassmembers class * extends android.webkit.WebViewClient { 
    <methods>; 
} 

答案 1 :(得分:2)

对于facebook sdk 3.0来说,这是唯一有用的东西:

-keepattributes Signature

-dontwarn com.facebook.**

-dontwarn com.parse.**

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

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

(来自http://adilatwork.blogspot.com/2013/01/parse-android-sdk-facebook-and-proguard.html

答案 2 :(得分:2)

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

答案 3 :(得分:0)

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

在mac上:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

胜利:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

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