xcodebuild归档配置不起作用

问题描述:

我想使用xcodebuild归档一种具有3种不同配置的方案,但配置永远不会随归档操作而更改。xcodebuild归档配置不起作用

这里是.SH内容

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Distribution clean archive 

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Inhouse clean archive 

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Release clean archive 

更新:打造行动工作正常

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Distribution clean build 

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Inhouse clean build 

xcodebuild -workspace myApp.xcodeproj/project.xcworkspace -sdk iphoneos -scheme myApp -configuration Release clean build 

我使用Xcode4.5/iOS6.0,它正常工作与构建操作(配置更改每个xcodebuild运行),任何解决方案?

存档操作的配置没有任何作用,也许是xcodebuild的错误。

为了更改存档的配置,我编写了一个shell脚本,每次在运行存档命令之前更改方案的配置。

可能不是最好的解决方案,但解决问题。

下面是代码:

#! /bin/sh 

# Define Scheme name 
PACKAGE_PROJECT_NAME="MyApp" 
PACKAGE_SCHEME_NAME="MyApp" 

# Get Username 
PACKAGE_USER_NAME="$(whoami)" 

# Scheme Path 
PACKAGE_SCHEME_DIR="$SRCROOT/${PACKAGE_PROJECT_NAME}.xcodeproj/xcuserdata/${PACKAGE_USER_NAME}.xcuserdatad/xcschemes" 
PACKAGE_SCHEME_PATH="${PACKAGE_SCHEME_DIR}/${PACKAGE_SCHEME_NAME}.xcscheme" 

echo "PACKAGE_SCHEME_PATH = ${PACKAGE_SCHEME_PATH}" 

# Set Configuration 
# WARNING: BACKUP_CONFIGURATION MUST be same with build configuration of archive action in MyApp scheme 
BACKUP_CONFIGURATION="Distribution" 

# WARNING: Archive name of archive action in MyApp scheme MUST be set explicitly. 
# WARNING: BACKUP_ARCHIVENAME MUST be same with archive name of archive action in MyApp scheme 
BACKUP_ARCHIVENAME="MyAppArchive" 

echo "BACKUP_CONFIGURATION = ${BACKUP_CONFIGURATION}" 
echo "BACKUP_ARCHIVENAME = ${BACKUP_ARCHIVENAME}" 

# -------------------------------Archive Distribution--------------------------------------- 
# Set Configuration 
OLD_CONFIGURATION="${BACKUP_CONFIGURATION}" 
NEW_CONFIGURATION="Distribution" 
OLD_ARCHIVENAME="${BACKUP_ARCHIVENAME}" 
NEW_ARCHIVENAME="${PACKAGE_SCHEME_NAME}_${NEW_CONFIGURATION}" 

# Clean 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} -configuration ${NEW_CONFIGURATION} clean 

# Change archive configuration 
sed -i .bak "/<ArchiveAction/,/<\/ArchiveAction>/{s/\"${OLD_CONFIGURATION}\"/\"${NEW_CONFIGURATION}\"/;s/\"${OLD_ARCHIVENAME}\"/\"${NEW_ARCHIVENAME}\"/;}" ${PACKAGE_SCHEME_PATH} 

# Archive 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} archive 

# -------------------------------Archive Inhouse------------------------------------------ 
# Set Configuration 
OLD_CONFIGURATION="${NEW_CONFIGURATION}" 
NEW_CONFIGURATION="Inhouse" 
OLD_ARCHIVENAME="${NEW_ARCHIVENAME}" 
NEW_ARCHIVENAME="${PACKAGE_SCHEME_NAME}_${NEW_CONFIGURATION}" 

# Clean 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} -configuration ${NEW_CONFIGURATION} clean 

# Change archive configuration 
sed -i .bak "/<ArchiveAction/,/<\/ArchiveAction>/{s/\"${OLD_CONFIGURATION}\"/\"${NEW_CONFIGURATION}\"/;s/\"${OLD_ARCHIVENAME}\"/\"${NEW_ARCHIVENAME}\"/;}" ${PACKAGE_SCHEME_PATH} 

# Archive 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} archive 

# -------------------------------Archive Adhoc------------------------------------------- 
# Set Configuration 
OLD_CONFIGURATION="${NEW_CONFIGURATION}" 
NEW_CONFIGURATION="Release" 
OLD_ARCHIVENAME="${NEW_ARCHIVENAME}" 
NEW_ARCHIVENAME="${PACKAGE_SCHEME_NAME}_${NEW_CONFIGURATION}" 

# Clean 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} -configuration ${NEW_CONFIGURATION} clean 

# Change archive configuration 
sed -i .bak "/<ArchiveAction/,/<\/ArchiveAction>/{s/\"${OLD_CONFIGURATION}\"/\"${NEW_CONFIGURATION}\"/;s/\"${OLD_ARCHIVENAME}\"/\"${NEW_ARCHIVENAME}\"/;}" ${PACKAGE_SCHEME_PATH} 

# Archive 
xcodebuild -workspace ${PACKAGE_PROJECT_NAME}.xcodeproj/project.xcworkspace -sdk iphoneos -scheme ${PACKAGE_SCHEME_NAME} archive 

# ------------------------------Restore Configuration------------------------------------- 
sed -i .bak "/<ArchiveAction/,/<\/ArchiveAction>/{s/\"${NEW_CONFIGURATION}\"/\"${BACKUP_CONFIGURATION}\"/;s/\"${NEW_ARCHIVENAME}\"/\"${BACKUP_ARCHIVENAME}\"/;}" ${PACKAGE_SCHEME_PATH} 

使用--scheme选项时,配置将被Scheme自身的设置覆盖。您将需要创建3个不同的方案和每个配置为使用适当的配置存档动作:

enter image description here

或者你不能用计划打扰在所有,使用的命令--target--configuration开关直接行。

+0

生成操作正常工作(见我的更新),使用'-target'存档操作将无法运行,得到'不支持生成操作archive'错误。 – nova