7

我的名字是 Luca,我目前正在研究 iOS 持续集成,以使用 shell 脚本在 xcode 中构建应用程序以进行分发(Ad Hoc 和 App Store)。

到目前为止,我使用 IPA 文件取得了很好的效果。我的问题是在 App Store 中分发。要从脚本构建 .app(传递一些参数),我会:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc

由于使用 XCode 4.2,应用程序提交是使用 XCode Organizer Window 完成的,我还必须能够归档我的可执行文件。

因此,我将前面的命令行修改如下:

xcodebuild -scheme myScheme -configuration myConfiguration PRODUCT_NAME=myProductName TARGETED_DEVICE_FAMILY=myTargetedDeviceFamily .... etc      **archive**

不幸的是,在我这样做之后,'archive' 参数似乎强制 xcodebuild 忽略其他参数(PRODUCT_NAME、TARGETED_DEVICE_FAMILY、....),并且我的输出是使用 XCode 预定义的构建设置构建的。

我希望能够使用 xcodebuild 传递参数并有效,但“归档”操作似乎阻止了这种情况。

我要疯了,请帮忙:)

谢谢

4

3 回答 3

4

xcodebuild的归档操作似乎在 Xcode 4.2 中有一个错误。通常可以将项目配置的覆盖指定为命令行参数或通过-xcconfig参数。

尽管构建操作尊重它们,但存档却没有。(大概这是因为归档是一个在内部调用 build 的元操作,但不会将选项传递给内部调用。)有一个 OpenRadar错误描述了这个问题,所以大概它已被报告给 Apple。

最后,请注意,如果您要使用脚本中的存档操作,则不能依赖 xcodebuild 的退出代码。归档操作始终产生退出代码 0(成功,按照惯例)。要检测构建失败,您需要抓取输出。

于 2012-02-08T12:28:10.037 回答
0

我遇到了同样的问题。我目前的解决方法基本上是删除其他配置,因此存档被迫使用您想要的配置。不是一个可以通过命令行完成的解决方案,希望 Apple 能够解决这个明显的问题。

于 2012-06-21T18:07:54.740 回答
-1

这对于原始海报来说可能为时已晚,但可能对其他人有所帮助。对于我的构建过程,我使用 xcodebuild 先清理然后构建,然后使用 xcrun 创建存档:

 /usr/bin/xcrun -sdk iphoneos PackageApplication -v "build/<Path_to_build_dir>/<App_Name>.app" -o "<Path_to_archive_output>.ipa" --sign "<signing identity>" --embed "<path to provision profile>.mobileprovision"

使用此命令,我可以为应用商店创建存档,甚至可以像这样将临时构建上传到 TestFlight:

curl http://testflightapp.com/api/builds.json \
    -F file="<path to archive>" \
    -F api_token='<api token>' \
    -F team_token='<team token>' \
    -F notes='Automated build'  \
    -F notify=True \
    -F distribution_lists='me'

这适用于 xcode 6.1

于 2014-12-05T12:17:31.483 回答