Facebook Unity3d расширяет UnityPlayerActivity, ломая другие плагины, которые делают то же самое

Итак, у меня уже есть один сторонний плагин, который расширяет UnityPlayerActivity, плюс мы расширяем его, чтобы посыпать свои собственные вещи, и теперь вместе с Facebook появился SDK для единства с его собственной расширенной UnityPlayerActivity.

Почему все эти сторонние SDK думают, что они настолько чертовски особенные, что могут просто ввести себя в эту драгоценную позицию? Хорошо, напыщенная речь сделана...

Есть ли надежда, что Facebook сможет исправить свой SDK, чтобы не делать этого? Запрашиваемая здесь, так как у них нет собственного форума поддержки...

Между тем, есть ли способ примирить существование двух расширений одного класса? Является ли единственный способ взломать эти сторонние банки и переписать один подкласс UnityPlayerActivity?

Facebook SDK хорош и чист (по сравнению с prime31), но в настоящее время практически недоступен для нас в Android:(

Обновление:

Ну, я пошел дальше и отредактировал свой собственный подкласс, добавив в него один вызов, который имел подкласс facebooks, и это вроде как работает. По крайней мере, дальше.

Теперь я получаю исключение NullPointerException из класса LoginAction в Facebook:

W/System.err( 1166): java.lang.RuntimeException: Unable to pause activity     {com.fluik.WordMeisterFree/com.facebook.LoginActivity}: java.lang.NullPointerException
W/System.err( 1166):    at  android.app.ActivityThread.performPauseActivity(ActivityThread.java:3016)
W/System.err( 1166):    at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2971)
W/System.err( 1166):    at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2949)
W/System.err( 1166):    at android.app.ActivityThread.access$800(ActivityThread.java:141)
W/System.err( 1166):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1251)
W/System.err( 1166):    at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err( 1166):    at android.os.Looper.loop(Looper.java:137)
W/System.err( 1166):    at android.app.ActivityThread.main(ActivityThread.java:5039)
W/System.err( 1166):    at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err( 1166):    at java.lang.reflect.Method.invoke(Method.java:511)
W/System.err( 1166):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
W/System.err( 1166):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
W/System.err( 1166):    at dalvik.system.NativeStart.main(Native Method)
W/System.err( 1166): Caused by: java.lang.NullPointerException
W/System.err( 1166):    at com.facebook.LoginActivity.onPause(LoginActivity.java:121)
W/System.err( 1166):    at android.app.Activity.performPause(Activity.java:5206)

Где это выглядит, он пытается установить видимость на индикаторе выполнения, который не может быть найден:

findViewById(R.id.com_facebook_login_activity_progress_bar).setVisibility(8);

Похоже, что он находит его в представлении create, поэтому, возможно, что-то его разрушает, прежде чем этот код вызывается Доступен ли источник для FB SDK, чтобы я мог попробовать исправить это сам?

Обновление:

Только что подтвердил, что даже помещая исходную активность запуска Facebook в com.facebook.unity.FBUnityPlayerActivity, я получаю точно такой же сбой. Я единственный, кто видел это? Тестирование на Nexus7....

2 ответа

Обновить:

Мы все еще застряли в Android, борясь за основную деятельность, но вы можете прикрепить наш код к любой активности на вершине стека, как показано здесь:

Конфликт с тегами активности на манифесте Android: Facebook и Google Play Games в Unity3d

Мы думаем, что решили проблему конфликта ресурсов, поэтому, если вы все еще видите это, дайте нам знать.

У меня та же проблема, и ее можно обойти, используя проект Android в качестве проекта библиотеки в eclipse, содержащем только файлы res из sdk.

Удалите переопределенные файлы классов FBUnityPlayerActivity и R из jar de SDK и свяжите этот библиотечный проект с вашим проектом затмения Unity.

Наконец, переместите код FBUnityPlayerActivity OnActivityResult в свою реализацию UnityActivity OnActivityResult.

Помните, что ваш манифест должен указывать на вашу активность, а не на FBUnityPlayerActivity (тот, который вы удалили), определенный сценариями редактора sdk.

Кроме того, проверьте это http://prime31.com/docs, они утверждают:

Примечание. Существует серьезная проблема, связанная с плагинами Android, в которых внешние ресурсы хранятся в папке res. В настоящее время только 1 плагин с внешними активами может быть развернут в приложении. Это ограничение в отношении того, как активы обрабатываются с помощью Android в целом. Мы всегда ищем решение, которое не требует прямой перекомпиляции Java-кода и пока не нашло его.

Поэтому мы не можем ожидать, что у нас будет чистое решение для этого в ближайшее время.

Другие вопросы по тегам