I'm trying to get my libGDX game running on an iPhone. I'm using libGDX v1.7.2 and RoboVM plugin v1.12.0 but isn't enrolled in the Apple Developer program. It should be possible to run it anyway with a free provisioning from XCode 7.0 (using 7.2 atm) according to http://docs.robovm.com/getting-started/provisioning.html#free-provisioning. I followed the steps there.
When I start the game (debugg/run as iOS Device App from Eclipse) i get the following error:
Launch failed. Check the RoboVM console for more information. The given data is not a property list of a supported format.
The last 10 lines from the console in question:
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 is mentioned in the last line before the error and looks like this. I assume this is the property list the error message refers to.
<?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>
And here is the stacktrace from launching the project from a terminal if it's helpful:
$ ./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
And now I'm stuck. Any ideas?
Thanks in advance.