Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Proguard删除了Facebook Sdk共享对话框内容_Android_Facebook_Proguard_Facebook Android Sdk_Facebook Share - Fatal编程技术网

Android Proguard删除了Facebook Sdk共享对话框内容

Android Proguard删除了Facebook Sdk共享对话框内容,android,facebook,proguard,facebook-android-sdk,facebook-share,Android,Facebook,Proguard,Facebook Android Sdk,Facebook Share,我在android项目中使用proguard。 每当我打开Facebook for Android的共享对话框时,它就会变为空 facebook sdk版本为3.23.1 if(FacebookDialog.canPresentShareDialog(thisObj, FacebookDialog.ShareDialogFeature.SHARE_DIALOG)){ OpenGraphObject object = OpenGraphObject.Factory.createForPos

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

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 Obusation时,我会在sharedialog中获得空标题、图像或描述,所有数据都会丢失,有时会显示错误,有时会关闭而不出错

-保持类com.facebook.*{*;}

-保留署名

我还使用了许多proguard标记,包括这些标记,但共享对话框工作正常的唯一情况是禁用标记“-dontobfuscate”的模糊处理

希望有人有类似的问题,可以帮助我

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

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

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

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

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

Facebook SDK说你不需要执行任何额外的步骤:.@JaredBurrows前一天,Facebook页面显示了这个-keep class com.Facebook.*{*;}-keepattributes signature如果你使用最新的4.0.0 SDK,您将不再需要采取任何特殊步骤。@GokhanCaglar我使用eclipse和facebook提供的指南,仅适用于android studio,您能帮助将其导入eclipse吗。请查看这是否有效: