Libgdx facebook绑定ClassNotFound

时间:2014-09-19 19:26:21

标签: libgdx facebook-ios-sdk robovm

标题说明了一切。

我正在用libgdx实现游戏,我想将facebook sdk实现到iOS中。我正在使用robovm绑定。

SEE BELLOW !!

游戏编译并被推送到设备,但是当游戏启动时它会失败并显示以下消息:

java.lang.ExceptionInInitializerError
at org.robovm.bindings.facebook.manager.FacebookManager.didBecomeActive(FacebookManager.java)
at com.fcouceiro.flydive.IOSLauncher.didBecomeActive(IOSLauncher.java)
at org.robovm.apple.uikit.UIApplicationDelegate$ObjCProxy.$cb$applicationDidBecomeActive$(Unknown Source)
at org.robovm.apple.uikit.UIApplication.main(Native Method)
at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
at com.fcouceiro.flydive.IOSLauncher.main(IOSLauncher.java)
Caused by: org.robovm.objc.ObjCClassNotFoundException: FBAppCall
at org.robovm.objc.ObjCClass.getByType(ObjCClass.java)
at org.robovm.bindings.facebook.FBAppCall.<clinit>(FBAppCall.java)
... 6 more

我试图将binging包含为.jar和框架。有什么想法吗?

编辑:

我设法克服了这个错误,现在这里是新的:):

java.lang.NoSuchMethodError: org.robovm.apple.uikit.UIColor.black()Lorg/robovm/apple/uikit/UIColor;
    at org.robovm.bindings.facebook.manager.sample.LoadingOverlay.<init>(LoadingOverlay.java)
    at com.fcouceiro.flydive.IOSLauncher.setupFacebook(IOSLauncher.java)
    at com.fcouceiro.flydive.IOSLauncher.createApplication(IOSLauncher.java)
    at com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didFinishLaunching(IOSApplication.java)
    at com.fcouceiro.flydive.IOSLauncher.didFinishLaunching(IOSLauncher.java)
    at org.robovm.apple.uikit.UIApplicationDelegate$ObjCProxy.$cb$application$didFinishLaunchingWithOptions$(Unknown Source)
    at org.robovm.apple.uikit.UIApplication.main(Native Method)
    at org.robovm.apple.uikit.UIApplication.main(UIApplication.java)
    at com.fcouceiro.flydive.IOSLauncher.main(IOSLauncher.java)

提前致谢

2 个答案:

答案 0 :(得分:0)

前段时间我遇到了同样的问题。 以下是一些可能对您有帮助的步骤

在ios模块的robovm.xml中一定要添加

<frameworkPaths>
  <path>../facebook-ios</path>
</frameworkPaths>

其中facebook-ios是facebook模块的名称

<libs>
  <lib>build/libs/ios/libfacebook.a</lib>
</libs>

...

<resources>
 <resource>
   <directory>../facebook-ios/resources</directory>
   <skipPngCrush>true</skipPngCrush>
 </resource>
</resources>

同时将build.gradle文件从ios模块复制到facebook-ios,它将在构建时包含facebook.a。我认为这个gradle任务使事情有效:

task copyNatives « {
file("build/libs/ios/").mkdirs();

def outputDir = file("build/libs/ios")
if (outputDir != null) {
copy {
from "libs"
into outputDir
include "*.a"
}
}
}

答案 1 :(得分:0)

在新的更新之前,我无法解决该错误!

确保拥有最新的robovm和libgdx库!更新后一切顺利;)