【问题标题】:Proguard removed Facebook Sdk Share Dialog ContentProguard 删除了 Facebook Sdk Share Dialog 内容
【发布时间】:2015-03-26 13:35:27
【问题描述】:

我在我的 android 项目中使用 proguard。 每当我打开 Android 版 Facebook 的共享对话框时,它都会变空。

facebook sdk 版本是 3.23.1

if(FacebookDialog.canPresentShareDialog(thisObj, FacebookDialog.ShareDialogFeature.SHARE_DIALOG)){
    OpenGraphObject object = OpenGraphObject.Factory.createForPost("namespace:"+obj.object);
    object.setProperty("title", obj.title);
    object.setProperty("image", obj.image);
    object.setProperty("url", obj.url);
    object.setProperty("description", obj.description);
    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class);
    action.setType("namespace:"+obj.action);
    action.setProperty(obj.object, object);
    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(thisObj, action, obj.object).build();
    fbUiLifecycleHelper.trackPendingDialogCall(shareDialog.present());
}

此代码在没有 proguard 的情况下使用时完美运行,所有内容都可以轻松共享,我还在 Facebook 上正确提交了密钥哈希以用于不同的签名。

每当我使用 Proguard 混淆时,共享对话框中的标题、图像或描述为空,所有数据都会丢失,有时会显示错误,有时会无错误地关闭

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

-keepattributes 签名

我也使用了许多 proguard 标签,包括这些标签,但共享对话框完美运行的唯一情况是我通过标签“-dontobfuscate”禁用混淆。

希望有人遇到类似问题并可以帮助我。

有时日志会显示诸如序列化错误之类的错误,我也尝试了来自 proguard 官方网站的许多代码,如下所示,但这从未解决问题,自从我在 stackoverflow 上搜索问题并使用各种 proguard 编译 apk 文件以来已经 2 天了选项。

-keepnames class * implements java.io.Serializable

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

【问题讨论】:

标签: android facebook proguard facebook-android-sdk facebook-share


【解决方案1】:

较旧的 Facebook Sdk 在 proguard 中出现错误。 现在,新的 Facebook Sdk 版本 4.0.0 和 4.0.1 没有给 proguard 带来任何错误。 但是为了使用新的 sdk,我更新了以下内容 1) Eclipse 不受 Android 官方支持,因此迁移到 Android Studio。 2) 将 facebook sdk 用作 Gradle 依赖项而不是项目(就像我们在 Eclipse 或旧版本的 sdk 中所做的那样)。无需导入任何项目,只需将此行添加到 gradle depedencies

compile "com.facebook.android:facebook-android-sdk:4.0.1"

就是这样,在进行了这些更改之后,proguard 工作顺利,没有错误,但我肯定遇到了很多迁移问题。祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多