【问题标题】:How to create XCode archive without a clean build如何在没有干净构建的情况下创建 XCode 存档
【发布时间】:2013-01-16 10:36:09
【问题描述】:

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

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

有人知道如何在 XCode 归档过程中禁用“全部清除”步骤吗?非常感谢,我在这方面的搜索只提供了有关如何更快构建的建议(这对我们没有用的建议)。

【问题讨论】:

    标签: ios xcode build archive


    【解决方案1】:

    是的,有可能。

    正如我所怀疑的那样,这可以从命令行完成。我们花了一段时间才弄清楚这一点。这是我们的 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
    

    【讨论】:

    • 既然PackageApplication 在 Xcode 8.3 中消失了,你知道是否有一种新方法可以在没有干净构建的情况下创建 .ipa?
    • 很遗憾我不知道,但如果我知道如何在这里更新。
    【解决方案2】:

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

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

    否则,您会遇到头疼的问题,即必须在发布模式下进行开发而不是调试等 - 它根本行不通

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

    https://github.com/jasperblues

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

    【讨论】:

    • 感谢您的建议。我们确实有一个持续集成服务器,但有时开发人员会在 testflight 构建之后进行 testflight 构建,并且每行代码更改都会导致等待重新编译 25 分钟。
    【解决方案3】:

    增量构建适合存档。清理的重点是因为有时您可能会在清理修复的增量构建中遇到问题。这是在开发过程中可以接受的问题,但 Archive 是为分发构建而设计的,分发构建根本不应该有这种风险。

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

    【讨论】:

    • 感谢您的回答。为了安全起见,我会接受干净的构建最适合应用商店提交,但我们经常处于开发人员希望每天将 30 个构建推送到 testflight 的状态。这导致 30 个干净的构建(因为这些是档案),每个 25 分钟是 30 x 25 = 10 亿年 :(
    • 你有没有考虑过推动更少的构建?
    • 哈哈。当然。目前我们正在开发测试飞行集成功能,所以暂时没有。大多数时候情况并非如此。
    • @Ihavenocat:嗯,我唯一的其他建议是弄清楚为什么编译时间这么长。 25 分钟是一段相当长的汇编。
    • 庞大的项目,荒谬的代码量。我们正在朝着更快的构建方向发展,但考虑到我们的项目,细节很棘手。我怀念 iOS 休闲游戏的日子,那时我们的构建轻松不到 5 分钟。
    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 2013-09-29
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    相关资源
    最近更新 更多