增加构建数量的更好方法?

我一直在使用一个 shell 脚本作为我的 Xcode 构建过程的一部分来增加 普利斯特文件中的构建编号,但是它经常导致 Xcode 4.2.1崩溃(关于目标不属于某个项目的错误; 我猜改变 普利斯特文件在某种程度上会让 Xcode 感到困惑)。

Shell 脚本这样做是为了当一个文件比 普利斯特文件更新时,构建数只会增加 agvtool(所以只是构建不会增加值) :

if [ -n \"`find ProjDir -newer ProjDir/Project-Info.plist`\" ]; then agvtool -noscm next-version -all; else echo \"Version not incremented\"; fi

有没有一种方法可以增加构建编号(在 普利斯特文件或其他任何地方)而不破坏 Xcode?

最后编辑 : 我现在使用一个刚在 Github上公开的 python 脚本来完成这类工作。虽然没有很好的记录,但应该不难解决。作为奖励,这个回购还包含一个有用的脚本,自动捆绑第三方库到一个应用程序包。

62258 次浏览

如果我没有理解错你的问题,你想修改 Project-Info.plist文件,它是 Xcode 标准项目模板的一部分?

我问这个问题的原因是,Project-Info.plist通常处于版本控制之下,修改它意味着它将被标记为,好吧,修改。

如果可以的话,下面的代码片段会更新构建编号,并在过程中将文件标记为已修改,其中 get_build_number是一些脚本(例如,本例中的占位符) ,以获取(可能增加的)您想要使用的构建编号:

#!/bin/sh


# get_build_number is a placeholder for your script to get the latest build number
build_number = `get_build_number`


/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${build_number}" ProjDir/Project-Info.plist

PlistBuddy 允许您在 plist 文件中设置任何键,而不仅仅是版本号。您可以创建所有需要的 plist 文件,并在需要时将它们包含在资源中。然后可以从 bundle 中读取它们。

至于是否需要在 about 窗格和其他位置显示版本,您也可以考虑设置 CFBundleGetInfoStringCFBundleShortVersionString

我尝试了修改过的程序,但它不工作,因为:-

  1. Xcode 4.2.1更改. xcodeproj 中的 xcuserdata 子目录

  2. Git 注意到 Project-Info. plist 中以前的更改

以下修改将导致忽略这些更改,并且只标记真正的更改:-

if [ -n "$(find $dir \! -path "*xcuserdata*" \! -path "*.git" -newer $plist)" ]; then

谢谢你的剧本,效果很好。

我的 Info.plist 在一个包含空格名称的子目录中,所以我必须在 plist 路径中用引号修改 Run Script:

${PROJECT_DIR}/tools/bump_build_number.sh "${PROJECT_DIR}/${INFOPLIST_FILE}"

以相同的方式在所有路径周围引用 shell 脚本:

#!/bin/sh


if [ $# -ne 1 ]; then
echo usage: $0 plist-file
exit 1
fi


plist=$1
dir=$(dirname "$plist")


# Only increment the build number if source files have changed
if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$plist")
if [ -z "$buildnum" ]; then
echo "No build number in $plist"
exit 2
fi
buildnum=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "$plist"
echo "Incremented build number to $buildnum"
else
echo "Not incrementing build number as source files have not changed"
fi

你可能只想做到这一点时,你的 存档(并上传到 TF 例如)。 否则你的版本号可能会上升得很快。

在方案(Product/Edit Scheme/Archive/Pre-Actions)中,您可以添加一个只有在存档时才会执行的脚本。

此外,您可能希望在每次增加应用程序版本时重置构建号。

最后,如果你使用存档,你可以安全地禁用:

# if [ -n "$(find "$dir" \! -path "*xcuserdata*" \! -path "*.git" -newer "$plist")" ]; then
...
# else
# echo "Not incrementing build number as source files have not changed"
# fi

由于构建数只有在 存档时才会增加..。

编辑: 正确我所说的,在存档中的预动作发生在构建之后(但是在存档之前) ,所以构建数量将为下一个存档增加... 但是你可以创建一个新方案,并在这个新方案的构建(预动作)部分添加这个动作。并在要创建新的生成时使用此方案

整篇文章都很有帮助。我使用了这个技巧,但是在 GIT 中将脚本设置为提交后挂钩,因此每次成功提交后 CFBundleVersion 都会增加。钩子脚本放进去。Git/Hook.日志保留在项目目录中。

这符合我最基本的标准。我希望能够从 GIT 中提取一个版本,并重新构建我以前的版本。在构建过程中完成的任何增量都不会这样做。

这是我的剧本:

#!/bin/sh
#
# post-commit
#
# This script increments the CFBundleVersion for each successful commit
#


plist="./XYZZY/XYZZY-Info.plist"
buildnum=$(/usr/libexec/Plistbuddy -c "Print CFBundleVersion" "$plist")
if [ -z "$buildnum" ]; then
exit 1
fi
buildnumplus=$(expr $buildnum + 1)
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnumplus" "$plist"


echo $(date) "- Incremented CFBundleVersion to" $buildnumplus >> hookLog.txt

我已经使用了这个表单。它的工作原理和预期的一样。 Https://gist.github.com/sekati/3172554 (所有功劳归原作者所有)

我随着时间的推移修改的脚本。

Xcode-versionstring-generator.sh

Xcode-build-number-generator.sh

由于这些要点对开发社区有所帮助,所以我将它作为 GitHub 项目的基础。 以下是 GitHub 项目: Https://github.com/alokc83/xcode-build-and-version-generator

我已经更新了两个脚本的代码稍微增强了一点。 而不是使用以下抓取 GitHub

的最新版本

版本:

# xcode-version-bump.sh
# @desc Auto-increment the version number (only) when a project is archived for export.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Check the checkbox "Run script only when installing"
# 6. Drag the "Run Script" below "Link Binaries With Libraries"
# 7. Insure your starting version number is in SemVer format (e.g. 1.0.0)


# This splits a two-decimal version string, such as "0.45.123", allowing us to increment the third position.
VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${PROJECT_DIR}/${INFOPLIST_FILE}")
NEWSUBVERSION=`echo $VERSIONNUM | awk -F "." '{print $3}'`
NEWSUBVERSION=$(($NEWSUBVERSION + 1))
NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." '{print $1 "." $2 ".'$NEWSUBVERSION'" }'`
/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}"

构建:

# xcode-build-bump.sh
# @desc Auto-increment the build number every time the project is run.
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below into new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Ensure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)


buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

这些解决方案中的一个问题是 Launch Services 只能识别捆绑版本中的 < strike > four 5个主要数字。我有一个项目的构建编号是几千,所以我想使用一些较少的有效数字。

这个 Perl 脚本增加了项目中所有的 Info.plist,而不仅仅是当前目标的 Info.plist,所以构建编号都保持在 lockstep 中。它还使用一个补丁数字和两个次要数字,因此构建1234的版本是1.23.4。我使用它作为预构建行为,因此它适用于我构建的所有项目。

剧本很粗暴,但对我很有用。

#!/usr/bin/perl


use strict;
use warnings;
use v5.12.0;


use Dir::Iterate;


for my $plist_file(grepdir { /-Info.plist$/ } '.') {
my $build = `/usr/libexec/PlistBuddy -c "Print CFBundleVersion" '$plist_file'`;
chomp $build;


next unless $build;


# Strip dots
$build =~ s/\.//g;
$build =~ s/^0//g;


# Increment
$build++;


# Re-insert dots
$build =~ s/^(\d{0,4}?) (\d{0,2}?) (\d{0,1}?)$/$1.$2.$3/x;


# Insert zeroes
$build =~ s{(^|\.)\.}{${1}0.}g;


system qq(/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build" '$plist_file');
}

我建议使用 自动修订

Xcode 允许头文件(可以在构建时自动生成,而不是在 vcs 中自动生成)提供将在构建时在 info.plist 中展开的值。您可以在 自动修订网站上找到设置此选项的演练。

自动修订有一个针对这些类型的头文件的输出类型,以便在这些情况下提供帮助。

FWIW-这是我目前用来增加构建编号 只用于发布版本(包括归档)。在 Xcode 5.1下工作正常。

直接在 Xcode 复制/粘贴代码片段到 运行脚本构建阶段:

buildnum=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$PRODUCT_SETTINGS_PATH")


if [ "$CONFIGURATION" = "Release" ]; then
buildnum=$((buildnum + 1))
echo "Build number updated to $buildnum"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildnum" "$PRODUCT_SETTINGS_PATH"
fi;

您可能想看看我一直在开发的一个名为 Xcodeump 的新工具。它可以处理更新 CFBundleShortVersionString 和 CFBundleVersion。作为最后一步,它还将检入 git 并标记提交,以便与这些 CFBundle 值匹配。

Xcodeump 项目位于这里:

Https://github.com/markeissler/xcodebump

这个问题的很多答案我都搞混了,没有一个能让我满意。然而,我终于想出了一个我真正喜欢的混合物!

我们只需将 成品的版本号设置为 Git 提交的数量。这不会影响源代码控制,因为脚本只会改变构建的产品。

将这个“运行脚本”构建阶段添加到构建阶段的末尾:

if [ "${CONFIGURATION}" = "Release" ]; then
buildNumber=$(git rev-list --count head)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
fi

在您的项目中将 Info.plist 版本设置为您想要的任何版本,在构建发布版本时它将永远不会被使用。我把我的设置为 AUTOMATED或者 DEVELOPMENT,这样当我运行一个开发构建时就很清楚了。

就是这样!构建的应用程序将有一个不断增加的构建数量。(只要你总是在同一个分支上进行构建。)

为什么我喜欢这个方法:

  • 放松
  • 不会污染 Git 版本历史
  • CFBundleVersion 是完全自动的
  • 漂亮的版本号可以随时修改我想要的

其他注释:

  • 如果您的项目中有应用程序扩展,只需在这些目标上设置相同的构建脚本即可。这将保持所有版本号的自动化和同步。应用程序商店要求扩展版本匹配您的主应用程序。

这是我的解决办法。 如果你像我一样: 终端友好,像 Ruby 一样,像语义版本控制一样,试试这个。

创建一个名为 Rakefile的文件,其中包含:

require "xcodeproj"
require "versionomy"


XCODEPROJECT = "MyProject.xcodeproj"
INFOPLISTFILE = "MyProject/MyProject-Info.plist"


$UPDATES = [:major,:minor,:tiny]
$UPDATES.each { |part|
desc "increment #{part} part of version"
task "increment:#{part}" do |task|
version=`/usr/libexec/Plistbuddy -c "Print CFBundleVersion" #{INFOPLISTFILE}`.chomp
version=Versionomy.parse(version)
version=version.bump(part)


# I use the same string for CFBundleVersion and CFBundleShortVersionString for now
`/usr/libexec/PlistBuddy -c "Set :CFBundleVersion #{version}" #{INFOPLISTFILE}`
`/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString #{version}" #{INFOPLISTFILE}`
print "version upgraded to #{version}\n"
end
}

准备: gem install xcodeproj versionomy

运行: rake increment:majorrake increment:minorrake increment:tiny,只要你想。

我使用上一次 SVN 修订版的构建编号。如果更改构建目录中的 Info.plist,则不会影响源 Info.plist:

# use the last SVN revision as the build number:
Info_plist="$BUILT_PRODUCTS_DIR/$CONTENTS_FOLDER_PATH/Info.plist"
defaults write "${Info_plist}" CFBundleVersion `svn stat -u | awk '/'"Status against revision:"'/ {print $4}'`

Wil Gieseler 的解决方案的基础上,我只想做一个改变。他的解决方案将 git 提交的计数放入构建编号中。很有用,但是要找到创建那个构建的实际提交还是有点麻烦。我不太关心构建数量是否在单调增长,所以我放弃了这个要求,这样我就可以更容易地访问生成给定二进制文件的提交。

为此,我把他的第一个剧本修改如下:

# Set the build number to the decimal conversion of the short version of the current git SHA


# Get the short version of the current git SHA in hexadecimal
SHA=$(git rev-parse --short @)
# Uppercase any alphabetic chars in SHA (bc doesn't like lowercase hex numbers)
UPPERCASE_SHA=$(tr '[:lower:]' '[:upper:]' <<< "$SHA")
# Use bc to convert the uppercase SHA from hex to decimal
BUILD_NUM=$(bc <<< "ibase=16;obase=A;$UPPERCASE_SHA")
# Set our build number to that
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUM" "${PROJECT_DIR}/${INFOPLIST_FILE}"


# To convert a build number back to a usable git SHA, run the following, substituting the build number for <build number>
# bc <<< "ibase=10;obase=16;<build number>"

这将当前 gitSHA 的简短版本转换为十进制。十六进制字符不能很好地满足苹果的版本号要求,这就是为什么我必须这样做。要将其转换回来,只需运行如下代码:

SHA=$(bc <<< "ibase=10;obase=16;<build number>")

在 bash 中,其中 <build number>是从二进制文件获得的构建编号。然后,运行 git checkout $SHA,就可以了。

因为这是对 Wil Gieseler 的解决方案的改编,如上所述,您还需要以下构建后脚本:

# Set the build number to "DEVELOPMENT"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion DEVELOPMENT" "${PROJECT_DIR}/${INFOPLIST_FILE}"

这样你的 Git 历史就清白了。

我目前使用的脚本基本上是以上面的 艾丽克丝的为基础的。下面我的改编添加了一个检查,只在发布/存档构建中执行自动增量。

如果没有这种更改,就会出现版本控制冲突,因为每个开发人员都将以自己的速度递增构建数。而且,随着构建数量的不断变化,git 的历史会受到不必要的污染。

# xcode-build-bump.sh
# @desc Auto-increment Xcode target build number every time the project is archived
# @src stackoverflow.com/a/15483906
# @usage
# 1. Select: your Target in Xcode
# 2. Select: Build Phases Tab
# 3. Select: Add Build Phase -> Add Run Script
# 4. Paste code below in to new "Run Script" section
# 5. Drag the "Run Script" below "Link Binaries With Libraries"
# 6. Insure that your starting build number is set to a whole integer and not a float (e.g. 1, not 1.0)


if [ "Release" != "${CONFIGURATION}" ]
then
exit 0
fi


buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

它也可以作为 GitHub 要点使用(复制和粘贴格式稍微容易一些)。

你可以用 苹果的通用版本。基本上,您所要做的就是从承载您的。Xcproj 文件。更多细节请查看上面的网址。

我不知道哪种方式是最好的,但我会发布苹果的答案,以防有人正在寻找它..。

根据 苹果的问答帖子:

使用 agvtool 自动化版本号和构建号

版本号键和版本号键分别指定应用程序的市场营销版本和内部版本。Agvtool 是一个命令行工具,允许您自动将这些数字增加到下一个最高数字或特定数字。

生成编号标识应用程序的未发布版本或已发布版本。它以 CFBundleVersion(Bundle 版本)的形式存储在应用程序的 Info.plist 中。

You must complete the following steps in your Xcode project:

  1. 启用 agvtool

导航到目标的“生成设置”窗格,然后为所有生成配置更新该窗格,如下所示:

  • 将“当前项目版本”设置为您选择的值。

您的 Xcode 项目数据文件 Project.pbxproj 包含一个 CURRENT_PROJECT_VERSION(当前项目版本)生成设置,该设置指定项目的当前版本。Agvtool 在 project.pbxproj 中搜索 CURRENT_PROJECT_VERSION。如果 CURRENT_PROJECT_VERSION存在并停止运行,则继续运行,否则。它的值用于更新生成号。

  • 将版本控制系统设置为 Apple 泛型。

默认情况下,Xcode 不使用任何版本控制系统。将 Versioning System 设置为 AppleGeneric 可以确保 Xcode 将包含项目中所有 agvtool 生成的版本信息。

Set Versioning System to Apple Generic

  1. 设置您的版本和构建编号

Agvtool 在应用程序的 Info.plist 中搜索您的版本号和构建号。如果它们存在且不执行任何操作,则更新它们,否则。确保您的 Info.plist 中存在 CFBundleVersion(Bundle 版本)和 CFBundleShortVersionString(Bundle 版本字符串,短)键,如下图所示:

Set up your version and build numbers

退出 Xcode,然后导航到包含。在运行下列任何命令之前,在 Terminal 应用程序中添加 xcodeproj 项目文件。那个。Xcodeproj 项目文件包含 project.pbxproj,agvtool 使用它。(这是可以在脚本中而不是命令行中运行的部分。)

更新版本号

若要将版本号更新为特定版本,请运行

xcrun agvtool new-marketing-version <your_specific_version>

例如: 更新版本号到2.0

xcrun agvtool new-marketing-version 2.0

更新版本号

若要自动递增生成号,请运行

xcrun agvtool next-version -all

若要将应用程序的生成号设置为特定版本,请运行

xcrun agvtool new-version -all <your_specific_version>

例如: 将构建号设置为2.6

xcrun agvtool new-version -all 2.6.9

意外收获:

若要查看当前版本号,请运行

xcrun agvtool what-marketing-version

若要查看当前生成号,请运行

xcrun agvtool what-version

我通过以下方法更新 build number

$INFO_FILE是 plist 文件的路径。 $build_number是这栋楼的新编号。

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_number" "${INFO_FILE}"

一般来说,我的 $build_number是由 majorminor组成的部分。 minor来源于项目信息,所以我描述了如何生成 major部分。

## Composed by `major` and `minor`.
## `minor` is parsed from project information. It's another story.
## Examples: `21.1`, or `21.1.3`
build_number="${major_number}.${minor_number}"

我有两个决定 $build_number的策略。

第一策略

该策略使用 git tag计数来确定 build numbermajor。如果项目有 53标记,它将通过以下 shell 脚本返回 53

通常情况下,它会增加,并且会迫使开发人员在发布之前添加一个 git 标签。

major_number=$(git tag -l | wc -l | grep -oE "\d+")

第二项策略

詹金斯 CI 系统决定 major部分。它有一个环境变量 ABc1。它是自动增加时,建立在 CI 系统。这些信息对于跟踪 CI 系统的项目历史非常有用。

major_number=${BUILD_NUMBER}

这里是一个更新的版本。它的工作原理是 Xcode 9.3.1,iOS 11。

从应用程序目标中单击“构建阶段”,单击 + 图标以添加新的运行脚本,然后在框中粘贴此代码。

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

进入 Info.plist 文件,将“ Bundle version”设置为1,并将“ Bundle version string,short”设置为1。

使用 Info.plist 构建项目,您应该会看到 Bundle 版本(构建编号)的更改。

  • 注意,从 Xcode 9.3.1开始,您将无法在常规选项卡中看到这些更改,但是当您归档一个构建时,可以在 Info.plist 中看到这些更改

我觉得我找到了我的部落,部落,我希望你们被 VersionX 逗乐。

十年前,当我在一个有超过25个 Xcode 项目的工作区工作的时候,我利用这个机会使版本自动化,并且建立字符串更新到一个看起来荒谬的程度,如果你只是偶尔维护一两个项目的话。

第十版:

  • 知道构建类型(发布/调试)
  • 在构建时从存储库收集信息(包括 git 支持,但可以为 hg、 svn 或任何您使用的内容进行定制)
  • 提供了易于定制的花哨的营销版本字符串(在应用程序商店强加一个约定之前有更多的变化) ,这样你就可以使用 git 标签约定自动递增字符串,其中包括“ beta”的符号。
  • 包含一个用包含版本和提交信息的实例变量填充的类。这对于填充 about 面板和构造带有预填充信息的日志字符串、崩溃报告或用户电子邮件 bug 报告非常有用。

做起来很有趣,我学到了一大堆关于 Xcode 构建系统的知识。

下面是 VersionX 可以自动生成的美妙的 Version 和 Build 字符串类型的示例。

版本 X 1.0.1 β7(c5959a3「清洁」)

营销版本: VersionX 1.0.1 β7 “1.0.1是从提交的标记派生出来的,而 “ Beta 7”是由提交计数或构建计数(例如)自动生成的。

构建版本: (c5959a3“ Clean”) 显示短提交散列,并通知您生成目录没有未提交的更改。

VersionX (GitHub 的源代码)-一个巴洛克式系统,用于在 Xcode 项目中自动递增版本和构建字符串。

VersionX 文档。

我发现使用 使用 agvtool 自动化版本号和构建号最方便。

试试这个:

  1. 按照上面链接的苹果文档中的描述进行配置。
  2. 剧本作为预先行动添加到项目-> 编辑方案...-> 存档(或其他,如果你喜欢)
  3. Set: 从 <your_app_target>提供构建设置

脚本(第一行是可选的) :

exec > ${PROJECT_DIR}/prebuild.log 2>&1
cd ${PROJECT_DIR}
xcrun agvtool next-version -all
cd -

让我们用苹果自己的方式来做这件事。 它将在每次成功构建后增加构建数量

我会指导你通过5个图像,只是通过它。

  1. 当您在 Stop _ build _ 按钮的右侧选择您的项目名称时,从下拉菜单中选择“ Edit Scheme...”。 检查 First Step

  2. 从 left Side 菜单中展开“ Build”选项并选择“ Post-actions” 检查第二步

  3. 在这里,您可以添加您希望在程序成功构建后执行的所需代码(脚本)。在这种情况下,我们必须添加少量代码,才能使自动化完美地工作。> 1.从左侧角选择“ add (+)”按钮,添加新的脚本文件 > > 2。现在从下拉菜单中选择“新建运行脚本操作” 检查第三步

  4. 它有3个字段 > 1。Shell 已经为您分配了 > 2。现在为“提供您的建设设置从”选择您的项目名称。> 3.有一个很大的字段可以添加脚本,只需复制并通过这里的代码: 检查第四步

    PLIST = “ ${ PROJECT _ DIR }/${ INFOPLIST _ FILE }” PLB =/usr/libexec/PlistBuddy LAST _ NUMBER = $($PLB-c“ Print CFBundleVersion”“ $PLIST”) NEW _ VERION = $(($LAST _ NUMBER + 1)) $PLB-c“ Set: CFBundleVersion $NEW _ VERION”“ $PLIST”

  5. 完成第四个步骤后,只需选择“关闭”关闭窗口,我们必须做最后一步,去你的“ plist.info”文件在项目文件菜单,并确保“捆绑版本”键下的“键”部分最包含一个数值 检查第五步