0

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

このコードは、プロガードなしで使用すると完璧に機能し、すべてが簡単に共有されます。また、使用されているさまざまな署名に対して Facebook でキー ハッシュを正しく送信しました。

Proguard難読化を使用するたびに、共有ダイアログに空のタイトル、画像、または説明が表示され、すべてのデータが失われ、エラーが表示されたり、エラーなしで閉じたりすることがあります

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

-keepattributes 署名

これらを含む多くのプロガードタグも使用しましたが、共有ダイアログが完全に機能する唯一のケースは、タグ「-dontobfuscate」による難読化を無効にした場合です。

誰かが同様の問題を抱えていて、私を助けてくれることを願っています。

ログにシリアル化エラーのようなエラーが表示されることがあります。また、次のようなプロガードの公式サイトから多くのコードを試しましたが、問題は解決しませんでした。スタックオーバーフローで質問を検索し、さまざまなプロガードオプションを使用して 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();
}
4

1 に答える 1

0

古い 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"

それだけです。これらの変更の後、プロガードはエラーなくスムーズに動作しましたが、確かに多くの移行の問題がありました。幸運を

于 2015-04-13T12:30:40.603 に答える