2

因此,我已经使用了一个扩展 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 上测试....

4

2 回答 2

3

更新:

我们仍然被困在 Android 中,为主要活动而战,但您可以将我们的代码粘贴到堆栈顶部的任何活动中,如下所示:

与 android manifest 上的活动标签冲突:Unity3d 中的 Facebook 和 Google Play 游戏

我们认为我们已经解决了资源冲突问题,所以如果您仍然看到这个问题,请告诉我们。

于 2013-09-13T02:19:37.037 回答
0

我有同样的问题,可以通过在 Eclipse 中使用 android 项目作为库项目来解决它,该项目仅包含来自 sdk 的 res 文件。

从 de SDK jar 中删除覆盖的 FBUnityPlayerActivity 和 R 类文件,并将此库项目链接到您的 Unity eclipse 项目。

最后将 FBUnityPlayerActivity OnActivityResult 代码移动到您的 UnityActivity OnActivityResult 实现中。

请记住,您的清单应该指向您的活动,而不是由 sdk 编辑器脚本定义的 FBUnityPlayerActivity(您删除的活动)。

另外,检查这个http://prime31.com/docs#androidGeneral,他们说:

注意:对于任何将外部资源存储在“res”文件夹中的 Android 插件,都存在一个主要问题。目前,一个应用程序中只能部署 1 个具有外部资产的插件。这是关于如何在整个 Android 中处理资产的限制。我们一直在寻找一种不需要直接重新编译 Java 代码并且还没有找到的解决方案。

所以我们不能指望很快就会有一个干净的解决方案。

于 2013-09-24T12:55:02.140 回答