从命令行创建IPA时,为什么不会执行构建阶段脚本?

时间:2013-04-18 12:14:15

标签: ios xcode bash command-line ipa

问题 - 简短版本:

为什么在从命令行创建IPA时不会执​​行我的构建phase scripts? 当我运行xcodebuild来创建IPA时,预定义的构建阶段脚本不会被执行。那是为什么?


问题 - 冗长的版本:

我有一个工作空间,我希望从命令行创建一个IPA。

除了一件事,这个工作正常;我在目标的构建阶段有两个脚本,用于放置正确的应用程序版本(CFBundleShortVersionString)和正确的svn修订版号(CFBundleVersion)。这些脚本在从xcode归档时工作正常,但由于某些原因,从命令行归档时它们不会运行。 首先是为什么?

以下是正在运行的脚本(如果存档形式为xCode) enter image description here enter image description here

从命令行归档和创建IPA(必需品)

# Building
xcodebuild ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release clean build

# Creating IPA
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${PROJECT_BUILD_DIR}/${APPLICATION_NAME}.app" -o "${IPA_OUTPUT_PATH}/${APPLICATION_NAME}.ipa"

它可以工作并创建一个IPA,但不会执行任何构建阶段脚本,同时保留修订版号和版本号。

所有建议都表示赞赏!

根据BDASH的答案更新

我没有进行干净的构建,而是按照

进行安装
xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release

预定义的脚本将执行IN FACT(可在项目版本号中看到),安装期间没有错误。但是,创建的IPA大小约为300字节(而不是大约10MB),无法安装在设备上。

在安装应用之前构建应用,即

# Building
xcodebuild clean build ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 
# Installing
xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release

然后创建IPA将导致IPA执行版本脚本且大小正确但是无法在设备上安装它。试图将它放在设备上会给出一条错误信息 “程序”MyApp“未在您的iPhone设备上安装”我的设备“,因为发生了未知错误。”

1 个答案:

答案 0 :(得分:2)

您至少在其中一个脚本阶段检查了“仅在安装时运行脚本”。只有在使用build操作时,xcodebuild操作使用install时才会运行该阶段。