由于分发配置文件,iOS应用程序在发布时崩溃了? (libgdx + robovm)

时间:2015-02-23 19:57:34

标签: ios libgdx provisioning-profile robovm

出于同样的原因,我的iOS应用程序因提交而被拒绝两次:开始时崩溃。根据日志,我猜它来自我的配置文件和标识标识。 我使用Libgdx 1.5.x和RoboVM beta 4,使用Eclipse

当我构建没有配置文件的应用程序时,它可以在任何模拟器上构建并运行良好。 借助开发人员资料,该应用程序可在我的测试设备上构建并运行良好。 一切都很好,直到我将iosSignIdentity和iosProvisioningProfile设置为分发,我有以下错误:

使用以下命令从控制台构建:

./gradlew -Probovm.device.name=<my device name> launchIOSDevice --stacktrace

我收到错误:

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':ios:launchIOSDevice'.
...
Caused by: org.robovm.libimobiledevice.LibIMobileDeviceException: ApplicationVerificationFailed
at org.robovm.libimobiledevice.util.AppLauncher$1.error(AppLauncher.java:1001)
at org.robovm.libimobiledevice.Callbacks.callInstproxyCallback(Callbacks.java:64)

来自我的设备的日志(取自Xcode)是:

<Error>: profile not valid: 0xe8008012
<Error>: 0x1e3000 install_embedded_profile: Could not install embedded profile: 0xe8008012
<Error>: 0x1e3000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.6O8w3D/IOSLauncher.app/IOSLauncher: 0xe8008015

以下是我为分发创建的配置文件,它链接到我的Ditribution证书和我的应用: enter image description here

在我的build.gradle中,我设置了这样的标识和配置文件:

    robovm {
iosSignIdentity = "iPhone Distribution: <my name> (PK79UD6TA3)"
iosProvisioningProfile = "DistribKM"
iosSkipSigning = false
stdoutFifo = null
stderrFifo = null
}

}

我从这个命令行中获取iosSignIdentity: enter image description here

这就是我迷失的地方。我可以用

构建应用程序
./gradlew -Probovm.ipaArchs=thumbv7:arm64 build createIPA

构建将是成功的。但我几乎可以肯定,如果我上传并提交此版本进行修改,Apple将第三次拒绝它,原因与前两个版本相同:“应用程序在开始时崩溃”。

以上是上传到iTunes Connect后的样子: enter image description here

在提交之前,如何确保应用程序能够正常使用分发配置文件?

4 个答案:

答案 0 :(得分:1)

回答自己,它可能会帮助其他人知道,尽管这种构建在任何设备上崩溃,但它在几个小时前被Apple批准。 因此,如果您遇到此处描述的相同问题,请最后一次对所有内容进行三重检查,您的构建将崩溃但Apple可以批准。 使用Libgdx Robovm,使用XCode来检查配置文件和证书是不可能的,也是非常困难的,所以你基本上必须采取信念的飞跃...... 希望它有所帮助

答案 1 :(得分:1)

我们遇到了同样的问题,甚至我们的应用也被拒绝了两次。我们使用eclipse(不是在控制台中)使用adHoc配置文件进行构建,并且在我们尝试过的每个64位设备上构建崩溃。所以似乎以某种方式以标准方式制作IPA来自&#34; eclipse&#34;错过了64位架构。 (我确定我正确选择了所有参数)。

在控制台中构建IPA解决了这个问题。

./gradlew -Probovm.ipaArchs=thumbv7:arm64 build createIPA

答案 2 :(得分:0)

我遇到了同样的问题。现在已经修好了。我使用maven来管理依赖(这就是问题所在)。当您通过eclipse roboVM插件使用模拟器或真实设备运行应用程序时,maven依赖项将打包到目标ipa并部署到您的模拟器或真实设备,因此它可以正常工作。但是当你使用Robo VM Tools时 - &gt;用于应用程序商店/ Ad-Hoc分发的包...要导出ipa文件,maven依赖项不会导出到目标ipa。修复解决方案将所有依赖项放在核心项目的lib文件夹中,并添加到构建路径。

答案 3 :(得分:-1)

**最新更新:跳过android问题并解决了绑定项目问题,对于遇到此问题的任何人,请参阅此链接http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=11145&p=79057#p79057 **

你们可以给出从命令行设置gradle的任何参考吗?

./gradlew -Probovm.ipaArchs=thumbv7:arm64 build createIPA

我已经看了https://github.com/libgdx/libgdx/wiki/Gradle-on-the-Commandline,但这并没有多大帮助。每当我运行上面的代码时,它会编译所有项目,包括Android(但是,我很难设置Gradle与外部依赖项);日食运行良好。 是否可以仅编译核心&#39; +&#39; ios&#39;?例如以下

./gradlew -Probovm.ipaArchs=thumbv7:arm64 core:build ios:createIPA

*更新* 好吧,通过创建另一个临时项目并从新项目中删除android来规避第一个问题,当我构建它时说无法确定任务的依赖关系&#39;:ios:compileJava&#39;这是什么意思?

< - > --debug

20:54:47.851 [INFO] [org.gradle.execution.TaskNameResolvingBuildConfigurationAction] Selected primary task 'build' from project :
20:54:47.855 [ERROR] [org.gradle.BuildExceptionReporter] 
20:54:47.855 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
20:54:47.856 [ERROR] [org.gradle.BuildExceptionReporter] 
20:54:47.856 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
20:54:47.856 [ERROR] [org.gradle.BuildExceptionReporter] Could not determine the dependencies of task ':ios:compileJava'.
20:54:47.856 [ERROR] [org.gradle.BuildExceptionReporter] > Could not determine the dependencies of task ':ios:compileJava'.
20:54:47.856 [ERROR] [org.gradle.BuildExceptionReporter] 
20:54:47.857 [ERROR] [org.gradle.BuildExceptionReporter] * Try:
20:54:47.857 [ERROR] [org.gradle.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. 
20:54:47.857 [LIFECYCLE] [org.gradle.BuildResultLogger] 
20:54:47.857 [LIFECYCLE] [org.gradle.BuildResultLogger] BUILD FAILED
20:54:47.857 [LIFECYCLE] [org.gradle.BuildResultLogger] 
20:54:47.858 [LIFECYCLE] [org.gradle.BuildResultLogger] Total time: 1.288 secs

使用--stacktrace

Configuration on demand is an incubating feature.

FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':ios:compileJava'.
> Configuration with name 'default' not found.

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

* Exception is:
org.gradle.api.GradleException: Could not determine the dependencies of task ':ios:compileJava'.
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:65)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.getDependencies(CachingTaskDependencyResolveContext.java:53)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.addToTaskGraph(DefaultTaskExecutionPlan.java:112)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.addTasks(DefaultTaskGraphExecuter.java:76)
    at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:47)
    at org.gradle.execution.DefaultBuildExecuter.configure(DefaultBuildExecuter.java:42)
    at org.gradle.execution.DefaultBuildExecuter.access$100(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:48)
    at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
    at org.gradle.execution.DefaultBuildExecuter.configure(DefaultBuildExecuter.java:42)
    at org.gradle.execution.DefaultBuildExecuter.access$100(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:48)
    at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
    at org.gradle.execution.DefaultBuildExecuter.configure(DefaultBuildExecuter.java:42)
    at org.gradle.execution.DefaultBuildExecuter.select(DefaultBuildExecuter.java:35)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:142)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)
    at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:46)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64)
Caused by: org.gradle.api.artifacts.UnknownConfigurationException: Configuration with name 'default' not found.
    at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.createNotFoundException(DefaultConfigurationContainer.java:79)
    at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:192)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.getByName(DefaultConfigurationContainer.java:69)
    at org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.getByName(DefaultConfigurationContainer.java:33)
    at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency.getProjectConfiguration(DefaultProjectDependency.java:69)
    at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency_Decorated.getProjectConfiguration(Unknown Source)
    at org.gradle.api.internal.artifacts.dependencies.DefaultProjectDependency$TaskDependencyImpl.resolve(DefaultProjectDependency.java:164)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext$TaskGraphImpl.getNodeValues(CachingTaskDependencyResolveContext.java:86)
    at org.gradle.internal.graph.CachingDirectedGraphWalker$GraphWithEmpyEdges.getNodeValues(CachingDirectedGraphWalker.java:200)
    at org.gradle.internal.graph.CachingDirectedGraphWalker.doSearch(CachingDirectedGraphWalker.java:112)
    at org.gradle.internal.graph.CachingDirectedGraphWalker.findValues(CachingDirectedGraphWalker.java:64)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.doResolve(CachingTaskDependencyResolveContext.java:74)
    at org.gradle.api.internal.tasks.CachingTaskDependencyResolveContext.resolve(CachingTaskDependencyResolveContext.java:63)
    ... 47 more


BUILD FAILED