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

Gro*_*oot 7 bash xcode command-line ios ipa

问题 - 简短版本:

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


问题 - 冗长的版本:

我有一个工作区,我想从命令行创建一个IPA.

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

以下是正在运行的脚本(如果存档形式为xCode) 在此输入图像描述 在此输入图像描述

从命令行归档和创建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"
Run Code Online (Sandbox Code Playgroud)

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

所有建议表示赞赏!

由于BDASH的答案而更新

而不是做一个干净的构建,我做了一个安装

xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release
Run Code Online (Sandbox Code Playgroud)

预定义的脚本将执行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
Run Code Online (Sandbox Code Playgroud)

然后创建IPA将导致具有执行版本脚本和正确大小的IPA 但是无法将其安装在设备上.试图将它放在设备上将显示一条错误消息,说
"您的iPhone设备上没有安装"程序"MyApp",因为发生了未知错误."

bda*_*ash 3

您已为至少一个脚本阶段检查了“仅在安装时运行脚本”。仅当使用操作buildto时,该阶段才不会运行。xcodebuildinstall