【问题标题】:iOS: Making a build and archive command line tooliOS:制作一个构建和归档命令行工具
【发布时间】:2012-11-24 09:21:39
【问题描述】:

我知道这个话题在 SO 上被争论了很多次,但我没有找到所有的信息。

我正在制作一个外部脚本来构建和归档我的项目。
我找到了一些很好的文档 herehere,但我不知道如何获取 xcode 变量,例如 ${PROJECT_NAME}${TARGET_SDK} 等。

我还看到了这一行,这对于采购这些变量可能很有趣:

."$WORKSPACE/autobuild/build.config"

但我在我的 mac 上找不到任何“autobuild”文件夹或“build.config”文件。

我感觉我错过了一些直截了当的东西,但我不知道是什么......

有什么想法吗?

【问题讨论】:

  • 已经有这样的工具了。它被称为“制作”。
  • 好笑。我知道如何编译,我想将 vars 存储在项目配置文件中。

标签: xcode command-line build archive xcodebuild


【解决方案1】:

确保您已安装 XCode 命令行工具(通过 XCode 首选项)。

那么,我用的是一个简单的shell脚本:

#!/bin/sh
source "build.cfg"

xcodebuild -target "${XCODE_BUILD_TARGET}" -sdk "${XCODE_BUILD_SDK}" -configuration Release CODE_SIGN_IDENTITY="${XCODE_BUILD_CODE_SIGN_AUTHORITY}"
EXIT_CODE=$?
if [ ! $EXIT_CODE -eq 0 ];then
  exit $EXIT_CODE
fi

xcrun -sdk "${XCODE_BUILD_SDK}" PackageApplication -v "${XCODE_ABS_BUILD_APP_PATH}" -o "${XCODE_ARCHIVE_OUTPUT_PATH}" --sign "${XCODE_BUILD_CODE_SIGN_AUTHORITY}" --embed "${XCODE_ABS_PROVISIONING_CERTIFICATE_PATH}"
EXIT_CODE=$?
if [ ! $EXIT_CODE -eq 0 ];then
  exit $EXIT_CODE
fi

我还有很多其他的,但这是关键部分。然后 build.cfg 只包含上面的变量:

#!/bin/sh
export XCODE_PROJECT_DIR="Builds/iOS"
export XCODE_BUILD_TARGET="Demo-iPhone"
export XCODE_BUILD_SDK="iphoneos"
export XCODE_BUILD_PLIST="Info.plist"
export XCODE_BUILD_APP_NAME="demo.app"
export XCODE_BUILD_APP_DIR="build"
export XCODE_BUILD_CODE_SIGN_AUTHORITY="iPhone Distribution: ABC"
export XCODE_ARCHIVE_OUTPUT_IPA_FILENAME="demo.ipa"
export XCODE_ARCHIVE_OUTPUT_IPA_DIR="build/release"
export XCODE_ARCHIVE_PROVISIONING_CERTIFICATE="demo_adhoc.mobileprovision"
...

【讨论】:

  • 但重点是:我怎样才能自动获得XCODE_ABS_BUILD_APP_PATH
  • 我不认为有这样的工具。即使有,许多项目也有多个目标、sdk、证书等。所以你仍然需要把你的选择放在某个地方。我们确实解析 XCode 项目文件以从 shell 编辑设置,但如上所述,我使用为每个项目手工制作的配置文件。
猜你喜欢
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2011-06-13
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多