Proguard удалил содержимое диалогового окна Facebook Sdk Share

Я использую proguard с моим проектом Android. Всякий раз, когда я открываю диалоговое окно общего доступа Facebook для 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, я получаю пустой заголовок, изображение или описание в общем диалоговом окне, все данные теряются, иногда появляется сообщение об ошибке, а иногда закрывается без ошибки

-сохранить класс com.facebook.** { *; }

-keeppattributes Подпись

Я также использовал много тегов proguard, включая эти, но единственный случай, когда диалог общего доступа работает идеально, - это когда я отключаю обфускацию с помощью тега "-dontobfuscate".

Надеюсь, у кого-то была похожая проблема, и он может мне помочь.

Иногда в журнале отображаются ошибки, такие как ошибка сериализации, я также пробовал много кодов с официального сайта proguard, например следующие, но это никогда не решало проблемы, прошло 2 дня с тех пор, как я искал вопросы в stackoverflow и скомпилировал файл apk, используя различные параметры proguard.

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

person Diljeet    schedule 26.03.2015    source источник
comment
Пакеты SDK Facebook говорят, что вам не нужно выполнять никаких дополнительных действий: developers.facebook. com/docs/android/getting-started#proguard.   -  person Jared Burrows    schedule 26.03.2015
comment
@JaredBurrows позавчера на странице facebook отображался этот класс -keep com.facebook.** { *; } -keepattributes Подпись   -  person Diljeet    schedule 26.03.2015
comment
Если вы используете последнюю версию 4.0.0 SDK, вам больше не нужно предпринимать никаких специальных действий.   -  person Gokhan Caglar    schedule 26.03.2015
comment
@GokhanCaglar Я использую руководство eclipse и facebook только для студии Android, можете ли вы помочь импортировать его в eclipse.   -  person Diljeet    schedule 28.03.2015
comment
Спасибо за помощь, но, согласно Google, поддержка Eclipse скоро прекратится, я пытаюсь использовать новую IDE Android Studio и использую новый facebook sdk 4.0.0, построенный на gradle, я опубликую обновление, работает ли диалоговое окно общего доступа и proguard или нет после изменения интеграции fb на новый код в соответствии с новым sdk (после этого обновлю вопрос)   -  person Diljeet    schedule 31.03.2015


Ответы (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). Не нужно импортировать какой-либо проект, просто добавьте эту строку в зависимости от градиента.

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

вот и все, после этих изменений proguard работал без ошибок, но, конечно, у меня было много проблем с миграцией. Удачи

person Diljeet    schedule 13.04.2015