Iphone 必须被定义为某事。agvtool不会对它们进行其他设置。基于@cdasher代码,我向github添加了一个简单的脚本,供大家使用。当项目名称或源根包含空格时不起作用,请参阅我的改进答案仅在删除第一行并将第二行替换为此buildPlist=${INFOPL

Iphone 必须被定义为某事。agvtool不会对它们进行其他设置。基于@cdasher代码,我向github添加了一个简单的脚本,供大家使用。当项目名称或源根包含空格时不起作用,请参阅我的改进答案仅在删除第一行并将第二行替换为此buildPlist=${INFOPL,iphone,ios,xcode,xcode4,Iphone,Ios,Xcode,Xcode4,必须被定义为某事。agvtool不会对它们进行其他设置。基于@cdasher代码,我向github添加了一个简单的脚本,供大家使用。当项目名称或源根包含空格时不起作用,请参阅我的改进答案仅在删除第一行并将第二行替换为此buildPlist=${INFOPLIST\u FILE}注释即可;不需要一个新的答案,因为你所做的只是添加引号。我无法将其整齐地粘贴到注释中,当新行被删除时可读性较差。我修改了一些其他内容。有一种更简单的方法:创建一个构建目标,并使用它运行原始脚本来修改Info.plist文件


必须被定义为某事。agvtool不会对它们进行其他设置。基于@cdasher代码,我向github添加了一个简单的脚本,供大家使用。当项目名称或源根包含空格时不起作用,请参阅我的改进答案仅在删除第一行并将第二行替换为此
buildPlist=${INFOPLIST\u FILE}
注释即可;不需要一个新的答案,因为你所做的只是添加引号。我无法将其整齐地粘贴到注释中,当新行被删除时可读性较差。我修改了一些其他内容。有一种更简单的方法:创建一个构建目标,并使用它运行原始脚本来修改
Info.plist
文件。然后使正常的Xcode项目目标依赖于这个新的脚本目标。这将避免您试图避免的问题。这可以追溯到Xcode 4.2,当您使用构建阶段脚本处理
Info.plist
时,它会崩溃。这篇博文是从2014年开始的,所以我怀疑它只在Xcode 4.2和更早版本中才有必要。。。
    # Auto Increment Version Script
buildPlist=${INFOPLIST_FILE}
CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
CFBuildNumber=$(($CFBuildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" $buildPlist
CFBuildDate=$(date +%Y%m%d%H%M%S)
/usr/libexec/PlistBuddy -c "Set :CFBuildDate $CFBuildDate" $buildPlist
# get UTC date
CFBuildDate=$(date -u +"%a %b %d %T GMT %Y")
buildPlist=$SRCROOT/$INFOPLIST_FILE
PlistBuddy="/usr/libexec/PlistBuddy"

CFBundleVersion=`$PlistBuddy -c "Print CFBundleVersion" $buildPlist`
CFBundleVersion=$(($CFBundleVersion + 1))
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" $buildPlist
cd ${SOURCE_ROOT}
buildPlist=${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist
PlistBuddy="/usr/libexec/PlistBuddy"

buildNumber=`git rev-list HEAD --count`
buildNumber=$(($buildNumber + 1))

$PlistBuddy -c "Set :CFBundleVersion $buildNumber" $buildPlist
if [ "${CONFIGURATION}" = "Release" ]; then

buildPlist="${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist"

PlistBuddy="/usr/libexec/PlistBuddy"

CFBundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}")
CFBundleVersion=$(($CFBundleVersion + 1))

$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$buildPlist"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$INFOPLIST_FILE"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "${DWARF_DSYM_FOLDER_PATH}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
fi
let buildNumber = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String,
let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString")
xcodebuild -showBuildSettings -project ${SDK_PROJECT} | sed '1d;s/^ *//;s/"/\\"/g;s/ = \(.*\)/="\1"/;s/ = /=/;s/UID.*//' > xcodebuild-env.tmp
source xcodebuild-env.tmp

echo "${MARKETING_VERSION}"