【问题标题】:How do I automate building the source distribution for an iPhone app with Xcode? [closed]如何使用 Xcode 自动为 iPhone 应用程序构建源代码分发? [关闭]
【发布时间】:2010-09-27 10:15:33
【问题描述】:

我正在寻找一个开源的 iPhone 应用程序,但我有一些关于进行源代码分发的问题:

  1. 如何使用 XCode 自动创建源存档(或磁盘映像)?我想要一些类似于构建目标的东西,它可以归档源(如果需要,首先清理目标,但如果不需要的话,那就太好了)。我还有一个带有 ruby​​ 脚本的外部 netbeans 项目,该脚本用于构建程序所需的 SQL 数据库(但如有必要,可以单独存档)。

  2. 识别构成“源”的文件的最佳方法是什么?是否只是清洁所有目标后留下的任何东西?这种方法有什么注意事项(我不太相信 IDE 会清理它们似乎造成的所有问题——这是否可能包含任何它不应该包含的代码设计内容)?

【问题讨论】:

    标签: ios xcode open-source software-distribution


    【解决方案1】:

    您可以将运行脚本构建阶段添加到任何目标以对构建进行后处理。正确的方法通常是创建一个聚合目标,它首先构建您的构建产品目标,然后在输出上运行脚本。

    很难识别所有“源”文件。它通常是 $(SRCROOT) 中的所有内容,但如果您的项目以 Root -> ( src ) ( projfiles ) 方式布局,则 $(SRCROOT) 将仅包含您的项目文件而不包含任何源。您可能必须将至少顶级项目布局的知识编码到脚本中,并在它发生变化时对其进行维护。

    即使它是默认设置,但如果您要归档源代码,您可能不想将构建文件夹放在项目文件夹中,因为您经常会抓取中间件、项目索引和其他临时文件。在项目的 Get Info 检查器的 General 窗格中,将 Build Products and Intermediates 目录设置为项目目录之外的某个公共位置。这将简化存档源的工作。

    而且 Xcode 有一个内置的归档机制,称为 Snapshots;您可能想使用它,尽管自动化并不简单。但 Snapshots 确实了解您的所有来源。

    【讨论】:

      【解决方案2】:

      将SRCROOT环境变量设置为你要存档源的位置,cd到项目目录,然后执行

      xcodebuild installsrc build -configuration <configname> -target <targetname>
      

      “installsrc”构建操作将项目源复制到 ${SRCROOT}。

      【讨论】:

        【解决方案3】:

        嗯,到目前为止我还没有答案,所以我将从另一个方向来处理它,使用 make 和命令行。我将使用这个问题的答案:

        Building Qt Xcode Projects From the Command Line

        ...然后使用标准的“制作”方法来构建应用程序和源分发存档。

        【讨论】:

          【解决方案4】:

          按照建议调用以下脚本尝试聚合目标:

          #!/bin/bash -x

          cd "$BUILT_PRODUCTS_DIR"

          APPFILE="$PROJECT_NAME.app"

          IPAFILE="$PROJECT_NAME.ipa"

          如果 [ "$BUILD_STYLE" = "分布" ];那么

          rm -f "$APPFILE.zip" && zip -ry "$APPFILE.zip" "$APPFILE" && open .
          

          elif [ "$BUILD_STYLE" = "BetaTesting" ];那么

          rm -rf "$IPAFILE" iTunesArtwork Payload && \
          cp ../../Apple/iTunesArtwork . && \
          mkdir Payload && cp -Rp "$APPFILE" Payload && \
          zip -r "$IPAFILE" iTunesArtwork Payload && open .
          

          fi

          呃,也许这是另一个问题的答案......

          【讨论】:

            猜你喜欢
            • 2018-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-11-15
            相关资源
            最近更新 更多