无法在Android上运行适用于Unity的Facebook SDK

时间:2015-02-20 16:46:12

标签: facebook-unity-sdk

我无法在Android 5.0和Unity 4.6.1p4上将Unity SDK 6.1和6.2用于Unity。

如果我只是按原样抓取包(直接尝试资产存储和FB),它会在运行时崩溃,因为它无法找到

com.facebook.android.R $ Layout.class

此类位于bin / classes目录中(Unity似乎忽略),但它不在classes.jar文件中。

如果我删除classes.jar文件并从classes文件夹中的文件构建一个新文件(" jar -cvf classes.jar。"在classes目录中),我似乎已经过去了Layout.class问题,但得到一个空引用异常:

引起:java.lang.RuntimeException:无法恢复活动java.lang.NullPointerException:尝试调用虚方法' void android.view.View.setVisibility(int)'在null对象引用上         在android.app.ActivityThread.performResumeActivity(ActivityThread.java:2951)         在android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2982)         在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2365)         在android.app.ActivityThread.access $ 800(ActivityThread.java:144)         在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1278)         在android.os.Handler.dispatchMessage(Handler.java:102)         在android.os.Looper.loop(Looper.java:135)         在android.app.ActivityThread.main(ActivityThread.java:5221)         at java.lang.reflect.Method.invoke(Native Method)         在java.lang.reflect.Method.invoke(Method.java:372)         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

这对我毫无意义。 FB.Init似乎有效 - 它在FB.Login期间崩溃(在我之间调用Login和我的回调被调用)。

这应该只是开箱即用吗?

(FWIW,此应用程序适用于较旧版本的FB SDK)

1 个答案:

答案 0 :(得分:0)

此问题是由从SDK文件夹中删除否则为空的AndroidManifest.xml引起的。

我有一个复杂的构建过程,有许多不同的目标,所以我生成了自己的最终清单,并且不希望Unity搞乱它,所以我通常删除SDK文件夹中的那些以防止Unity合并它们。

我有一堆其他Android SDK,这不是问题,但显然Unity使用清单的存在来决定哪些文件包含在APK中(以及哪里?),这会导致某些SDK出现问题。

奇怪的是,当我查看APK时,所有文件似乎都在那里(特别是布局),但它一定是在错误的位置和/或格式。

无论如何,经验教训:即使你不认为你需要它,也不要删除清单:)