Xcode的“管理版本和构建号”选项

72
我刚刚更新到Xcode 13 Beta,并准备使用此版本的Xcode上传我的第一个构建版本到App Store。这个版本的Xcode显示了一个新的App Store Connect分发选项,我之前从未见过:

管理版本号和构建号

这将更改应用中所有内容的版本号和构建号为1.2(3)。

输入图像描述

我已经在Xcode中提高了我的版本号和构建号,然后进行了归档。我们应该怎么做?如果这是一种自动化的构建增量方式,那么使用它的好处是什么?


28
苹果公司做这件事真是无语...我们已经有自己的构建序列了,你们可以不要默认开启新功能吗?你们知道,对于那些多年来一直很愉快地逐步增加我们的构建号码的人来说,这样做可能并不好吧? :) - iGanja
1
也许从现在开始,苹果将朝着未来不需要第三方工具自动化发布的方向发展。因为这就是当今CI-CD工具为我们所做的。 - Umit Kaya
在这个问题上提交一个错误报告。这是不专业和愚蠢的行为:feedbackassistant.apple.com - Oscar
3个回答

47

我在 Xcode 归档之前已经增加了版本号和构建号。这里应该怎么做?

如果您确定在归档之前已经更新了版本/构建号,那么可以取消勾选此项,它将被忽略。

如果使用自动化的方式进行构建增量,有哪些好处?

  1. 它给了您改变版本号/构建号的机会,以防您忘记更改。之前的 Xcode 版本中没有任何指示。

  2. 它允许您在导出/上传之前(即归档后)更改版本号/构建号,之前如果想要更改版本号/构建号,必须创建一个新的归档。


2
这实际上听起来是一个不错的功能,只是对于现有项目,我会选择默认关闭。 - iGanja
18
附注:如果xcodebuild 13覆盖了您已经管理的CFBundleVersion值,请在您的exportOptions.plist中将新的 manageAppVersionAndBuildNumber 属性设置为false。 - Jaysen Marais
组织者上传后,仍然显示旧版本号。 - nrj
@JaysenMarais 你能否分享一下如何在exportOptions.plist中设置manageAppVersionAndBuildNumber的命令或方法? - Srithar Rajendran
@SritharRajendran 这是一个关于exportOptions.plist的合理入门指南(https://www.matrixprojects.net/p/xcodebuild-export-options-plist/)。一旦您拥有这样的文件并将其传递给`xcodebuild`,您只需添加一个名为`manageAppVersionAndBuildNumber`的键,并将其值设置为`false`。 - Jaysen Marais

26
对于使用fastlane并且遇到Xcode更改构建版本的人: Xcode 13中的新功能:
在将应用上传到App Store Connect时,Xcode的分发助手会检测您的应用程序是否具有有效的构建版本号(CFBundleVersion)。如果您的应用程序具有无效的编号(例如先前使用过的编号或者早于当前构建编号的编号),分发助手会提供选项自动将其递增为有效编号。此外,分发助手确保您的应用程序中所有嵌入式内容的构建号(例如应用扩展、App Clips或watchOS应用)与您的应用程序同步。请注意,这不会修改您的源代码或存档;Xcode会在打包和上传应用程序之前更新应用程序的暂存副本中的构建号。
当使用fastlane构建和发布应用程序时,您可以将“manageAppVersionAndBuildNumber: false”参数传递给build_app操作的export_options以禁用xcode版本更改。
build_app( scheme: "your_app_scheme", export_options:{ manageAppVersionAndBuildNumber: false })

1
说真的,苹果应该资助Fastlane。谢谢。 - Billy

14

作为框架程序员,您可以通过使用MARKETING_VERSION的构建时值来解决此问题。请参见样例代码:https://ootips.org/yonat/getting-your-framework-version-in-run-time/ - Yonat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接