我们有一个相当大的代码库,需要很长时间来清理构建。每当我们归档构建(Product->Archive)时,归档过程首先清理所有,然后构建。
这似乎不必要且耗时,我们希望能够在没有干净构建的情况下创建存档。增量构建应该没问题。
有人知道如何在 XCode 归档过程中禁用“全部清除”步骤吗?非常感谢,我在这方面的搜索只提供了关于如何更快地构建的建议(这对我们来说不是有用的建议)。
是的,有可能。
正如我所怀疑的那样,这可以从命令行完成。我们花了一段时间才弄清楚这一点。这是我们的 TeamCity 构建脚本的摘录。基本上你生成一个构建(干净或增量是你的选择),然后从构建中生成和 .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
设置一个持续集成服务器怎么样,这样每次提交都可以触发一个导致归档构建的过程。. . (希望在先运行测试等之后),以及发布 API 文档等。
它仍将花费相同的时间,但由于它在每次签入代码后在后台运行,并且最新的候选版本将始终可用 - 您可能不会注意到。
否则,您会遇到头疼的问题,您必须在发布模式下进行开发而不是调试等 -它只是无法正常工作。
这是一个 (OSX) 项目的示例,其中包含一个可以由持续集成服务器运行的构建脚本。我用的是 Bamboo,但如果你想要一些免费的东西,比如 Jenkins:
https://github.com/jasperblues
在上面的项目中,每个成功的构建(每当有人提交代码时触发)都会将 API 文档和测试覆盖率报告发布到 github 页面。. . 对于 iOS 项目,你也可以让它进行归档。
增量构建不适用于存档。清理的重点是因为有时您可能会在清理修复的增量构建中遇到问题。这是在开发过程中可以接受的问题,但 Archive 是为分发构建而设计的,分发构建根本不应该有这种风险。
更不用说,您的正常构建过程是构建一个 Debug 构建,而 Archive 将构建一个 Release 构建,因此无论如何您都需要重新构建大部分应用程序(自上次 Release 构建以来发生的任何变化)。