当前位置: 首页 > 面试题库 >

Facebook的Android ProGuard设置

蓝夕
2023-03-14
问题内容

我终于找到了为什么我的应用程序崩溃而无法发布的原因。ProGuard确实从我的应用程序中剥离了代码,但我通过在proguard-
android.txt(在sdk中找到)中使用keep命令手动添加类来防止了这种情况。

对于Facebook,我使用了:

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

但我认为我仍然缺少一些东西。该应用程序现在没有崩溃,但我无法登录Facebook并使用Open Graph。当我在调试模式下构建时,一切正常。

使用Facebook和Facebook的Open Graph的proguard设置是什么?

编辑

这是我为ProGuard手动添加的命令:

-dontwarn android.support.**

# ActionBarSherlock

-keep class android.support.** { *; }

-keep interface android.support.** { *; }

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

-keep interface com.actionbarsherlock.** { *; }




# Keep line numbers to alleviate debugging stack traces

-renamesourcefileattribute SourceFile

-keepattributes SourceFile,LineNumberTable

-keepclassmembers class * implements java.io.Serializable
{
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

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

编辑2
因此,无法登录的问题是我使用了我的调试哈希键而不是发布哈希键。在我的应用程序设置(developers.facebook.com)中进行了更改,发现我的应用程序终于登录了,但登录后崩溃了。

不知道这是否仍然是ProGuard问题,但返回了此错误:

04-02 11:47:31.815: E/AndroidRuntime(9093): FATAL EXCEPTION: main
04-02 11:47:31.815: E/AndroidRuntime(9093): com.facebook.ab: com.facebook.b.e got an unexpected method signature: public abstract com.facebook.b.b com.facebook.b.b.a(java.lang.Class)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.b.f.a(SourceFile:400)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.b.e.b(SourceFile:546)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.b.e.invoke(SourceFile:470)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at $Proxy1.a(Native Method)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.bb.a(SourceFile:124)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.ar.a(SourceFile:264)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.facebook.as.run(SourceFile:1240)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at android.os.Handler.handleCallback(Handler.java:615)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at android.os.Looper.loop(Looper.java:137)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at android.app.ActivityThread.main(ActivityThread.java:4931)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at java.lang.reflect.Method.invokeNative(Native Method)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at java.lang.reflect.Method.invoke(Method.java:511)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
04-02 11:47:31.815: E/AndroidRuntime(9093):     at dalvik.system.NativeStart.main(Native Method)
04-02 11:47:31.820: W/ActivityManager(2130):   Force finishing activity com.xxxxx.xxxx/com.xxxxx.views.MainActivity
04-02 11:47:32.360: W/ActivityManager(2130): Activity pause timeout for ActivityRecord{4289ca58 com.xxxxx.xxxxx/com.xxxxx.xxxxx.MainActivity}

问题答案:

固定:

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

代替:

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

另外,请务必在您的Facebook应用设置中检查您的哈希键。



 类似资料:
  • 本文向大家介绍facebook-graph-api 安装或设置,包括了facebook-graph-api 安装或设置的使用技巧和注意事项,需要的朋友参考一下 示例 有关设置或安装facebook-graph-api的详细说明。

  • 我试图设置一个自定义缩略图,当人们在Facebook上分享我的网站。我在这里关注了这篇文章:当分享我的网址时,脸书共享者如何选择图像和其他元数据? 看来这个信息可能是过时的,因为我无法让它工作。有人能告诉我是否有变化,现在如何处理? 我现在脑子里有这个,但它不起作用:

  • 我对这个新的Facebook界面感到非常困惑,它的沙盒按钮在运行中丢失了。 在开发一个应用程序的中间,所以我在沙箱模式-你想让这个应用程序和它的所有现场功能可供大众使用吗?设置为否(我只是在开发) 我以应用程序管理员的身份登录到我的iOS设备facebook帐户,我已经正确设置了iOS和bundle ID,正确设置了FBID,但每次尝试从设备登录facebook时,我都会。。。 “应用程序未设置:

  • 任何投入都会很有帮助。 谢了!

  • 问题内容: Facebook API和Facebook Connect的新功能。 在Google Code上找到了Facebook Java API开源库… 我真的很高兴有一个用Java预先编写的API! 对编写服务器端Java层感兴趣,该层使用REST能够访问用户的Facebook朋友列表,他们的墙,在网络上向他们发送消息等。 下载二进制文件,不幸的是,我解压缩时没有找到任何示例或演示代码。 问

  • 若持有Facebook®账号,可设定在Facebook公开的信息。 已登陆PlayStation®Network的状态下,轻触[PlayStation®Network]>[Facebook]。 Facebook是由Facebook, Inc.所提供的SNS(社群网络服务)。 若未持有Facebook账号,请事先使用电脑进入以下网站进行Facebook的账号注册。 http://www.facebo