因此,我已经使用了一个扩展 UnityPlayerActivity 的第 3 方插件,此外我们还扩展了它以将我们自己的东西撒入其中,现在出现了 facebook sdk 与它自己的扩展 UnityPlayerActivity 统一。
为什么这些 3rd 方 SDK 都认为自己如此特别,以至于他们可以将自己注入到这个宝贵的位置?好了,吐槽完了……
有没有希望 facebook 可以修复他们的 SDK 不这样做?在这里问,因为他们没有自己的支持论坛...
同时,有没有办法调和同一类的两个扩展的存在?破解这些第三方 jar 并重写单个 UnityPlayerActivity 子类的唯一方法是什么?
Facebook SDK 干净整洁(与 prime31 相比),但在当前状态下,我们在 android 上几乎无法使用 :(
更新:
好吧,我已经继续编辑了我自己的子类,添加了 facebooks 子类在其中的一个调用,它有点工作。至少它正在走得更远。
现在我从 Facebook 的 LoginAction 类中得到一个 NullPointerException :
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);
它似乎在视图创建中找到它,所以在调用此代码之前可能有什么东西正在破坏它。FB SDK 的源是否可用,所以我可以尝试自己修复这些东西?
更新:
刚刚确认即使将原始 facebook 启动活动放入 com.facebook.unity.FBUnityPlayerActivity,我也会遇到完全相同的崩溃。我是唯一一个看到这个的吗?在 Nexus7 上测试....