如何使用watchkit应用程序从命令行生成.ipa文件

我有一个jenkins实例,使用xcodebuild进行版本构build。 然后我有一个脚本(在jenkins)使用xcrun创build.ipa文件。 这直到现在对我们都很好。 现在我们有了一个watchkit应用程序,从这个过程创build的.ipa文件与创build并从Xcode中导出它的文件不一样。

从Xcode导出的.ipa有一个“Payload”文件夹,一个“Symbols”文件夹(可能是可选的)和一个“WatchKitSupport”文件夹。 由xcrun生成的ipa不具有“符号”或“WatchKitSupport”文件夹。 查看更多关于这里的结构: https : //stackoverflow.com/a/29400301/327386

我看到这个postSO: https ://stackoverflow.com/a/19856005/327386有命令来存档和导出.ipa构build(类似于Xcode进程),但即使这并没有创build有问题的新文件夹。

有谁知道是否有一种方法可以使用命令行工具来创build一个与Xcode创build的相同的.ipa文件? 我没有find任何官方文件

确切的问题

xcodebuild -exportArchive无法使用Watch Extension生成有效的IPA,这是一个Apple错误( http://openradar.appspot.com/20898925 )。

官方(Xcode 7)解决scheme

Apple使用xcodebuild -exportArchive命令的-exportOptionsPlist标志在Xcode 7中解决了这个问题。 你可以在这篇文章中find更多关于它的细节。

非官方(Xcode 6)解决scheme

有问题的解决方法。 如果紧急,那么你可以和他们一起玩,但我找不到一个解决scheme,每个人都工作(基于论坛讨论)。

  1. 添加WatchKitSupport和Symbols文件夹。 更多细节在这里和这里 。 这不是为我工作。
  2. 辞职整个应用程序。 更多细节在这里 。 这是hacky,但工作比以前提到的解决scheme更好。

我也面临同样的问题。 命令行工具exportArchive错过了所需的Watchkit支持文件夹,同时将存档导出到ipa。 我试图使用下面的shell脚本。

https://gist.github.com/phatblat/6eb8895e2202f796960e

你可以从你的Jenkins构build脚本中调用上面的shellcript,如下所示。

 <exec executable="/bin/bash" failonerror="true"> <arg value="${root.dir}/buildscripts/package-ida.sh" /> <arg value="${build.dir}/APP_NAME.xcarchive" /> <arg value="${build.dir}/APP_NAME.ipa" /> </exec> 

现在,您将能够在您的ipa有效内容中看到WatchKit支持文件夹,并且使用生成的Jenkins版本,您的App Store应用程序validation也将成功。