简体   繁体   English

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

[英]Proguard removed Facebook Sdk Share Dialog Content

I am using proguard with my android project. 我在我的android项目中使用了proguard。 Whenever i open a share dialog of Facebook for Android it gets empty. 每当我打开Android的Facebook分享对话框时,它就会变空。

facebook sdk version is 3.23.1 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());
}

this code works perfect when using it without proguard, everything is shared easily, i also submitted Key Hashes on Facebook correctly for different signatures used. 此代码在没有proguard的情况下使用时效果很好,所有内容都可以轻松共享,我还针对不同的签名在Facebook上正确提交了密钥哈希。

Whenever i use Proguard obuscation, I get empty title, image or description in the sharedialog, all data gets lost and sometimes it says error and sometimes closes without error 每当我使用Proguard进行混淆时,在共享对话框中都会出现空白的标题,图像或说明,所有数据都会丢失,有时会显示错误,有时会关闭而不会出现错误

-keep class com.facebook.** { *; -保持类com.facebook。** {*; } }

-keepattributes Signature -keepattributes签名

i also used many proguard tags including these ones, but the only case when the share dialog works perfectly is when i disable obfuscation by tag "-dontobfuscate". 我还使用了许多proguard标签,包括这些标签,但是共享对话框完美工作的唯一情况是当我通过标签“ -dontobfuscate”禁用混淆功能时。

Hope somebody had similar issue and can help me. 希望有人遇到类似的问题并能对我有所帮助。

Sometimes log displays errors like Serialization error, i also tried many codes from proguard official site, like the following but this never solved the issues, its been 2 days since i am searching questions on stackoverflow and compiled the apk file using various proguard options. 有时日志会显示诸如序列化错误之类的错误,我也尝试了来自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();
}

The Older Facebook Sdk was giving errors with proguard. 较旧的Facebook SDK在使用proguard时出错。 Now the new Facebook Sdk versions 4.0.0 and 4.0.1 are not giving any errors with proguard. 现在,新的Facebook Sdk版本4.0.0和4.0.1的proguard没有出现任何错误。 But for using the new sdk i have updated the following 1) Eclipse is not officially supported by Android so migrated to Android Studio. 但是对于使用新的SDK,我已经更新了以下内容:1)Android尚未正式支持Eclipse,因此已迁移到Android Studio。 2) used the facebook sdk as a Gradle Dependency not as a project(like we did in Eclipse or older versions of sdk). 2)将Facebook sdk用作Gradle Dependency,而不是作为项目使用(就像我们在Eclipse或更早版本的sdk中所做的那样)。 No need to import any project, just add this line to gradle depedencies 无需导入任何项目,只需将此行添加到gradle行为中

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

thats it, after these changes proguard worked smoothly without errors, but surely i had a lot of migration issues. 就是这样,在这些更改之后,proguard可以顺利运行且没有错误,但是肯定我有很多迁移问题。 Good Luck 祝好运

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM