【问题标题】:How to tell if Xcode is doing a "build and archive" in a script?如何判断 Xcode 是否在脚本中进行“构建和归档”?
【发布时间】:2011-06-01 04:58:22
【问题描述】:

我有一个在 Xcode 中实际构建之前进行一些预处理的脚本。有没有办法判断 Xcode 何时进行“构建和归档”?我想做一个“svn commit”作为归档步骤的一部分。我转储了在构建过程中存在的环境变量,但是对于归档文件,它们看起来与正常构建相同。

还有什么可以检查来判断它是否正在构建档案?

在构建存档之前自动执行提交的任何其他方式?我不想对每个构建都进行提交,因为这会使 svn 树更难导航 IMO。

我使用的是 Xcode 3.2.5。

谢谢! 规范

【问题讨论】:

    标签: iphone xcode archive xcodebuild


    【解决方案1】:

    我建议您从 Xcode GUI 获取带有独立脚本的日常构建系统。这将使svn commit 触发构建和存档和分发。您可以使用xcrun 命令运行构建和存档,如下所述:

    Xcode "Build and Archive" from command line

    【讨论】:

    • 我认为这可能是我必须采取的路线。另一种选择是在我想要存档时使用不同的配置。仍然依赖于我选择正确的配置,但是 Xcode 仍然可以完成这项工作。
    【解决方案2】:

    我想避免命令行构建和存档,因为我读到它不会构建一个嵌入了配置文件的 .ipa 文件。使用它可以更轻松地将其发送给测试人员。

    我做了以下事情:

    我有 4 种配置。调试、发布、临时发布和 App Store 发布。

    我使用调试和发布来构建而不进行提交。当我想发送给 beta 测试人员时,我使用 Ad Hoc,并使用 App Store 进行最终测试和 App Store 提交。

    这是我添加到预构建脚本中的代码。

    # Get the version number from the .plist file
    VER_NUM=`cat "${SRCROOT}/${INFOPLIST_FILE}" | grep -A 1 CFBundleVersion | grep string | sed 's/]*>//g' | sed 's/^[  ]*//'`
    
    # Check build type to see if svn commit should be done
    if [ "${BUILD_STYLE}" == "App Store Distribution" ] 
    then 
    SVN_COMMIT=yes
    fi
    
    if [ "${BUILD_STYLE}" == "Ad Hoc Distribution" ] 
    then 
    SVN_COMMIT=yes
    fi
    
    if [ "${SVN_COMMIT}" == "yes" ]
    then
    echo "Commiting the project to SVN"
    BUILD_TIME=`date`
    svn commit -m "\"Version ${VER_NUM} for ${BUILD_STYLE} ${BUILD_TIME}\""
    fi 
    

    这是我对这个问题的快速而肮脏的回答。必须有一个更优雅的解决方案,但这暂时可行。如果 Apple 只是添加一个环境变量来表明它是一个归档构建,就可以解决它。

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2010-11-24
      • 1970-01-01
      • 2013-09-26
      • 2012-05-09
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      相关资源
      最近更新 更多