使用agvtool自动化版本号和编译号

版本和内部版本号码Key分别指定市场和应用程序的内部版本。agvtool是一个命令行工具,它允许你这些数字自动递增到下一个最高号码或特定号码。
本文档提供循序渐进的方式操作指示使用更新版本和版本号agvtool

XcodeCommand Line分别是XcodeCommand Line操作步骤。

版本号,这是显示你的应用程序的用户数量,标识您的应用程序的发布版本。它存储在在应用程序的Info.plist作为CFBundleShortVersionString(版本字符串,short类型

内部版本号标识您的应用程序的一个未发布的和发布的版本。它存储在在应用程序的Info.plistCFBundleVersionBundle version),可以看更多的key

参见图1展示的版本号和App Store应用程序的版本号,分别为1.3201.4为例

1 . App Store的应用程序版本号和编号

Paste_Image.png

当你的应用程序包括多个Targetagvtool将设置所有目标的版本号相同数字

Xcode

必须先完成在Xcode项目执行以下步骤

1.让agvtool可见
导航到你的TargetBuild Setting面板,然后更新您的所有构建配置如下

  • 设置Current Project Version为你选择的值
  • Xcode项目的数据文件,project.pbxproj,包括CURRENT_PROJECT_VERSION(当前工程版本)构建设置,指定项目的当前版本
    agvtool搜索project.pbxprojCURRENT_PROJECT_VERSION字段。如果CURRENT_PROJECT_VERSION将继续运行,否则将停止运行。
    它的值是用来更新Build号。

当前项目版本的值必须是整数或浮点数,如34.6,如果是新项目必须设置为1。

  1. 前往通用设置Versioning System
    默认Xcode不试用任何的版本系统,设置版本系统苹果一般保证的xcode将包含项目中的所有agvtool生成的版本信息。

    图2 设置当前项目版本和版本系统构建设置
    Paste_Image.png

设置您的版本号和编译号

agvtool将在你的应用程序的info.plist搜索版本号和编译号。如果存在就更新他们,如果不存在就什么都不做。确保CFBundleVersion(版本号)和CFBundleShortVersionString(编译号)如图3所示的键值在Info.plist里面

  • 图3 在Info面板中版本号和编号
    Paste_Image.png

DYLIB CURRENT_VERSION(当前库版本)构建设置指定库或框架的当前构建的版本.如果您正在构建一个Library Framework,一定要按照上面的步骤,并确保你的Target的生成设置面板中包含此设置

命令行

退出xcode,然后导航到包含.xcodeproj项目文件该目录在终端应用程序的运行下列命令,该.xcodeproj项目文件包含project.pbxproj,被agvtool用。

更新版本号

要更新的版本号为特定的版本,运行

agvtool new-marketing-version <your_specific_version>

其中,<your_specific_version>是一个数字如清单1中所看到你选择的.

更新的版本号为2.0

$ xcrun agvtool new-marketing-version 2.0
Setting CFBundleShortVersionString of project MyProject to:
    2.0.
Updating CFBundleShortVersionString in Info.plist(s)...
Updated CFBundleShortVersionString in "MyProject.xcodeproj/../MyProject/MyProject-Info.plist" to 2.0

更新Build版本

自动递增的Build版本号,运行

agvtool next-version -all

自动递增的内部版本号到下一个最大整数

$ xcrun agvtool next-version -all
Setting version of project MyProject to:
    2.
Also setting CFBundleVersion key (assuming it exists)
Updating CFBundleVersion in Info.plist(s)...
Updated CFBundleVersion in "MyProject.xcodeproj/../MyProject/MyProject-Info.plist" to 2

运行agvtool next-version -all到下一个最大整数值。例如,它会更新2〜3和1.3至2。

要设置应用程序的版本号为特定的版本,运行

agvtool new-version -all <your_specific_version>

<your_specific_version>是你选择的

设置Build版本为2.6.9

$ xcrun agvtool new-version -all 2.6.9
Setting version of project MyProject to:
    2.6.9
Also setting CFBundleVersion key (assuming it exists)
Updating CFBundleVersion in Info.plist(s)...
Updated CFBundleVersion in "MyProject.xcodeproj/../MyProject/MyProject-Info.plist" to 2.6.9

查看版本号

要查看当前版本号,运行

agvtool what-marketing-version

显示当前版本号

$ xcrun agvtool what-marketing-version
No marketing version number (CFBundleShortVersionString) found for Jambase targets.
Looking for marketing version in native targets...
Looking for marketing version (CFBundleShortVersionString) in native targets...
Found CFBundleShortVersionString of "2.0" in "MyProject.xcodeproj/../MyProject/MyProject-Info.plist"

要查看当前版本号,运行

agvtool what-version

显示当前Build版本

$ xcrun agvtool what-version
Current version of project MyProject is:
2.2