ios - 在iPhone上启动libgdx项目时出现PropertyListFormatException

标签 ios iphone libgdx robovm

我正在尝试让我的libGDX游戏在iPhone上运行。我正在使用libGDX v1.7.2和RoboVM插件v1.12.0,但未注册到Apple Developer程序中。根据http://docs.robovm.com/getting-started/provisioning.html#free-provisioning的要求,应该可以通过XCode 7.0的免费配置(使用7.2 atm)运行它。我按照那里的步骤。

当我启动游戏(从Eclipse调试/以iOS Device App身份运行)时,出现以下错误:

启动失败。检查RoboVM控制台以获取更多信息。的
给定数据不是支持格式的属性列表。

有关控制台的最后10行:

1/6/16 7:50:01 PM: [ INFO] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -q -iphone -f 0 /Users/kristofercarlsson/Development/Projects/test_libgdx172/GravityExplorer/ios/data/Default~ipad.png /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/Default~ipad.png
1/6/16 7:50:01 PM: [ INFO] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -q -iphone -f 0 /Users/kristofercarlsson/Development/Projects/test_libgdx172/GravityExplorer/ios/data/Icon-72.png /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/Icon-72.png
1/6/16 7:50:01 PM: [ INFO] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -q -iphone -f 0 /Users/kristofercarlsson/Development/Projects/test_libgdx172/GravityExplorer/ios/data/Icon-72@2x.png /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/Icon-72@2x.png
1/6/16 7:50:01 PM: [ INFO] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -q -iphone -f 0 /Users/kristofercarlsson/Development/Projects/test_libgdx172/GravityExplorer/ios/data/Icon.png /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/Icon.png
1/6/16 7:50:02 PM: [ INFO] /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush -q -iphone -f 0 /Users/kristofercarlsson/Development/Projects/test_libgdx172/GravityExplorer/ios/data/Icon@2x.png /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/Icon@2x.png
1/6/16 7:50:02 PM: [ INFO] Installing Info.plist to /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app
1/6/16 7:50:02 PM: [ INFO] xcrun dsymutil -o /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app.dSYM /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app/IOSLauncher
1/6/16 7:50:02 PM: [ INFO] Copying Development provisioning profile: iOS Team Provisioning Profile: se.fkstudios.gravityexplorer.IOSLauncher (S493Z6975K.se.fkstudios.gravityexplorer.IOSLauncher)
1/6/16 7:50:02 PM: [ INFO] Code signing app using identity 'iPhone Developer: some.email@gmail.com ([HEX_CODE])' with fingerprint [FINGERPRINT]
1/6/16 7:50:02 PM: [ INFO] codesign -f -s [FINGERPRINT] --entitlements /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/Entitlements.plist /Users/kristofercarlsson/Development/Projects/test_libgdx172/.metadata/.plugins/org.robovm.eclipse.ui/build/GravityExplorer-ios/GravityExplorer-ios/ios/thumbv7/IOSLauncher.app
1/6/16 7:50:14 PM: [ERROR] Launch failed

在错误之前的最后一行中提到了Entitlements.plist,它看起来像这样。我假设这是错误消息所引用的属性列表。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>S493Z6975K.*</string>
    </array>
    <key>application-identifier</key>
    <string>S493Z6975K.se.fkstudios.gravityexplorer.IOSLauncher</string>
    <key>com.apple.developer.team-identifier</key>
    <string>S493Z6975K</string>
</dict>

这是从终端启动项目的堆栈跟踪(如果有帮助的话):
$ ./gradlew ios:launchIOSDevice --stacktrace
Starting a new Gradle Daemon for this build (subsequent builds will be faster).
Configuration on demand is an incubating feature.
:core:compileJava UP-TO-DATE
:core:processResources UP-TO-DATE
:core:classes UP-TO-DATE
:core:jar UP-TO-DATE
:ios:compileJava UP-TO-DATE
:ios:processResources UP-TO-DATE
:ios:classes UP-TO-DATE
:ios:jar UP-TO-DATE
:ios:assemble UP-TO-DATE
:ios:compileTestJava UP-TO-DATE
:ios:processTestResources UP-TO-DATE
:ios:testClasses UP-TO-DATE
:ios:test UP-TO-DATE
:ios:check UP-TO-DATE
:ios:build UP-TO-DATE
:ios:launchIOSDevice
RoboVM has detected that you are running on a slow HDD. Please consider mounting a RAM disk.
To create a 2GB RAM disk, run this in your terminal:
SIZE=2048 ; diskutil erasevolume HFS+ 'RoboVM RAM Disk' `hdiutil attach -nomount ram://$((SIZE * 2048))`
See http://docs.robovm.com/ for more info
:ios:launchIOSDevice FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':ios:launchIOSDevice'.
> Failed to launch IOS Device

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':ios:launchIOSDevice'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.api.GradleException: Failed to launch IOS Device
    at org.robovm.gradle.tasks.IOSDeviceTask.invoke(IOSDeviceTask.java:48)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 68 more
Caused by: java.io.IOException: The given data is not a property list of a supported format.
    at org.robovm.compiler.target.ios.AppleDeviceTarget.getConnectedDevices(AppleDeviceTarget.java:403)
    at org.robovm.compiler.target.ios.AppleDeviceTarget.createDeviceLauncher(AppleDeviceTarget.java:282)
    at org.robovm.compiler.target.ios.AppleDeviceTarget.createLauncher(AppleDeviceTarget.java:172)
    at org.robovm.compiler.target.AbstractTarget.doLaunch(AbstractTarget.java:486)
    at org.robovm.compiler.target.ios.AppleDeviceTarget.doLaunch(AppleDeviceTarget.java:777)
    at org.robovm.compiler.target.AbstractTarget.launch(AbstractTarget.java:482)
    at org.robovm.compiler.AppCompiler.launchAsync(AppCompiler.java:840)
    at org.robovm.compiler.AppCompiler.launch(AppCompiler.java:825)
    at org.robovm.compiler.AppCompiler.launch(AppCompiler.java:820)
    at org.robovm.gradle.tasks.IOSDeviceTask.invoke(IOSDeviceTask.java:46)
    ... 76 more
Caused by: com.dd.plist.PropertyListFormatException: The given data is not a property list of a supported format.
    at com.dd.plist.PropertyListParser.parse(PropertyListParser.java:216)
    at org.robovm.compiler.target.ios.AppleDeviceTarget.getConnectedDevices(AppleDeviceTarget.java:397)
    ... 85 more


BUILD FAILED

现在我被卡住了。有任何想法吗?

提前致谢。

最佳答案

我有同样的问题。

使用最新的每晚RoboVM版本可以解决此问题。说明可以在这里找到:

http://docs.robovm.com/advanced-topics/nightlies.html

根据RoboVM Google小组的这篇帖子,该错误与“USB集线器”的问题有关。就我而言,这似乎是在将虚拟机的USB支持从Usb3更改为Usb2之后发生的(以修复其他错误!)。

关于ios - 在iPhone上启动libgdx项目时出现PropertyListFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643022/

相关文章:

ios - 如何从 Swift 中的闭包返回值?

ios - 如何在 iOS 中自定义 UISearchbar?

ios - 如何在 swift 4 的中心显示 CollectionViewCell

iphone - 如何在 iOS 5 中刷新可重复使用的单元格?

android - 如何在 Libgdx 中绘制中心渐变

java - libGDX:带有 BitmapFont(true) 的文本字段在边框外呈现文本

ios - 使用自定义 fillShader 加载 SKShapeNode 会导致程序挂起

iphone - 如何在 UITableView 的两个部分之间插入 UIImageView?

Javascript iPad、iPhone 和 Android - 如何获取页面的全宽和全高?

game-engine - Cocos2d-x是否具有商业品质?