如何在没有干净构建的情况下创建XCode存档

时间:2013-02-01 06:17:12

标签: ios xcode build archive

我们有一个相当大的代码库,需要很长时间来清理构建。每当我们归档构建(Product-> Archive)时,归档过程首先清除所有,然后构建。

这似乎不必要且耗时,我们希望能够在没有干净构建的情况下创建存档。增量构建应该没问题。

有人知道如何在XCode存档过程中禁用“全部清除”步骤吗?非常感谢,我对此的搜索只提出了如何更快地构建构建的建议(对我们来说这不是一个有用的建议)。

3 个答案:

答案 0 :(得分:5)

是的,这是可能的。

我怀疑是这种情况,可以从命令行完成。我们花了一段时间才弄明白这一点。以下是我们的TeamCity构建脚本的摘录。基本上你生成一个构建(clean或incremental是你的选择),然后从构建生成和.ipa。这是一个选项(当然删除了开发者身份和提供配置文件ID):

export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"

xcodebuild -project <PROJECT NAME>.xcodeproj -target <PROJECT NAME> -configuration Release -sdk iphoneos -arch armv7 ONLY_ACTIVE_ARCH=NO CONTRIB_PATH=%system.agent.home.dir%/Contrib2 CODE_SIGN_IDENTITY="iPhone Developer: <DEV NAME> (ID)"  
PROVISIONING_PROFILE=<PROFILE ID>

rm -rf Payload
mkdir Payload

cp -R build/Release-iphoneos/ Payload/

rm ~/<PROJECT NAME>.ipa
xcrun -sdk iphoneos PackageApplication -v Payload/<PROJECT NAME>.app -o ~/<PROJECT NAME>.ipa --sign "iPhone Developer: <DEV NAME> (ID)" --embed ~/Library/MobileDevice/Provisioning\ Profiles/<PROFILE ID>.mobileprovision

答案 1 :(得分:0)

如何设置持续集成服务器,以便每次提交都可以触发导致存档构建的进程。 。 。 (希望先运行测试等),以及发布API文档等。

它仍然需要相同的时间,但由于它在每次检查代码后都在后台运行,并且最新的候选版本将始终可用 - 您可能不会注意到。

否则,您会遇到头疼的情况,您必须在发布模式而不是调试等方面进行开发 - 它只是不起作用

这是一个(OSX)项目的示例,其中包含可由持续集成服务器运行的构建脚本。我使用Bamboo,但如果你想要一些免费的东西,还有Jenkins:

https://github.com/jasperblues

在上面的项目中,每个成功的构建(每当有人提交代码时触发)都会将API文档和测试覆盖率报告发布回github页面。 。 。对于iOS项目,您也可以让它进行归档。

答案 2 :(得分:-1)

对于存档,增量构建正常。清理的关键是因为有时您可以在增量构建中获得干净修复的问题。这在开发过程中是一个可以接受的问题,但Archive适用于分发版本,分发版本根本不应该有这种风险。

更不用说,您的正常构建过程正在构建一个Debug构建,Archive将构建一个Release构建,因此您无论如何都需要重建大部分应用程序(自上次发布版本以来发生了任何变化) )。