Xcode:如何在应用名称中包含内部版本号

时间:2017-02-17 15:20:06

标签: xcode

我推出了Mac应用的测试版,并希望在应用名称中包含当前版本号,例如:用户在Dock等中看到的应用名称。

如果我的应用名为The App,我希望它显示The App Beta 1234

所以在目标的构建配置中,有"产品名称"其值为$(TARGET_NAME)

现在,在调试版本中,我想在那里添加内部版本号。这应该可以使用$(TARGET_NAME) Beta $(????)

我放在那里而不是?????还是不是那么简单?

e.g。这是:Getting CFBundleVersion from within Jenkins to use it as a variable, something like ${APP_VERSION}

但是,我没有使用Jenkins,而且它看起来有点不稳定。这是访问CFBundleVersion的唯一/正确方法吗??

2 个答案:

答案 0 :(得分:1)

您可以做多件事:

1)使用构建阶段修改CFBundleName

  • 在Xcode中选择要修改的目标
  • 打开所选目标的构建阶段
  • 添加新的运行脚本构建阶段
  • 粘贴以下代码

BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") /usr/libexec/PlistBuddy -c "Set :CFBundleName $PRODUCT_NAME Beta $BUILD_NUMBER" "$TARGET_BUILD_DIR/$INFOPLIST_PATH"

该脚本使用 PlistBuddy 。首先,它从CFBundleVersion获取Info.plist并将其存储在变量BUILD_NUMBER中。在第二步中,它使用 PlistBuddy CFBundleName设置为$PRODUCT_NAME Beta $BUILD_NUMBER。请注意,它将修改原始plist,而是修改构建目录中的plist,这样您就不会被git存储库中的更改所困扰。

应用程序运行时,CFBundleName将显示在菜单栏中。它不会影响Dock中的应用程序名称(源自应用程序的文件名)。

注意:如果您使用CFBundleDisplayName对Bundle Name进行了本地化,则可能无效。在这种情况下,您可能需要调整上面的脚本。

2)使用自定义构建设置

  • 选择您要修改的目标
  • 打开所选目标的构建设置
  • 编辑 - >添加构建设置 - >添加用户定义的设置
  • 为新设置CUSTOM_BUILD_VERSION命名并添加值
  • 在构建设置中搜索PRODUCT_NAME并将其更改为$(TARGET_NAME) Beta $(CUSTOM_BUILD_VERSION)
  • 打开目标Info.plist
  • CFBundleVersion更改为$(CUSTOM_BUILD_VERSION)
  • 如果您要更改构建版本,请更改CUSTOM_BUILD_VERSION而不是

使用此方法Xcode将创建一个名为" SomeApp Beta"的应用程序。由于Dock中的名称与应用程序包名称相同,因此Dock也将使用该名称。

3)构建

后重命名App

当然,您也可以在使用Xcode构建应用程序后重命名该应用程序。如果您使用Gradle(请参阅gradle-xcodeplugin),Fastlane或自定义构建脚本从命令行构建应用程序,这当然可以自动完成。 使用PlistBuddy从捆绑的应用程序中提取CFBundleVersion然后重命名捆绑包以包含提取的值应该非常容易。这应该与1)中的脚本非常相似。

答案 1 :(得分:0)

使用$(TARGET_NAME)Beta $(BUILD_NUMBER)