传统上,我习惯于manage build and version numbers with Apple's agvtool和/或构建脚本,然而,在将归档上传到App Store Connect时,我注意到现在有了一个新的选项:
管理版本和内部版本号
存档的内部版本号不符合App Store Connect要求。这将把应用中所有内容的版本和内部版本号更改为1.0(2)。
我期待这个自动更新我的目标的版本号和内部版本号,但是,我发现它根本不更新 * 版本号 *;而且,尽管它更新了 build number,但它只在归档中这样做,所以我的Xcode项目显示了一个过时的值。
如何获得此新功能以更新目标的版本号和内部版本号?
作为参考,Xcode 14(SwiftUI界面)中的新项目如下所示...
Info.plist不再自动创建。相反,目标的Info选项卡显示Bundle版本字符串(短)(CFBundleShortVersionString
)和Bundle版本(CFBundleVersion
),它们分别硬编码为值${MARKETING_VERSION}
和${CURRENT_PROJECT_VERSION}
:
我说“硬编码”是因为无论我尝试什么(删除、更新或在Info.plist中重新定义CFBundleShortVersionString
之类的值),这两个设置都会在导航回Info选项卡时重置为上面的屏幕截图。
还要注意,MARKETING_VERSION
默认为1.0
(这是奇数,因为the CFBundleShortVersionString
documentation明确表示它必须是3个整数);而CURRENT_PROJECT_VERSION
默认为1
。
尝试更改General选项卡中的捆绑包值只会更改支持属性的值(例如,MARKETING_VERSION
表示“版本”)。
1条答案
按热度按时间new9mtju1#
除非有人有更好的答案,这是我迄今为止所能收集/猜测的...
Xcode 13的新增功能是,如果Xcode检测到我分发的内部版本号已在App Store Connect上使用,或者没有递增,它会将归档中的内部版本号递增为有效版本号。[emphasis added]
1.这个答案引用了Xcode发行说明中的以下内容,这再次表明它只增加构建号,并且只更新归档:
将应用上传到App Store Connect时,Xcode中的分发助手会检测您的应用是否具有有效的内部版本号(CFBundleVersion)。如果您的应用具有无效编号(就像以前使用的,或者在您当前的内部版本号之前),分发助手提供了一个选项来自动将它增加到一个有效的数字。分发助理可确保您的应用中所有嵌入内容(如应用扩展、应用剪辑或watchOS应用)的内部版本号与您的应用同步。请注意,这不会修改您的源代码或存档;在打包并上传到App Store Connect之前,Xcode会更新应用暂存副本中的内部版本号。(59826409)[emphasis added]
1."管理版本和内部版本号"功能的名称很糟糕。当内部版本号递增时,版本号只更新in embedded frameworks, to keep them in sync with the main app。这通常是不希望的,可能是why people are looking to permanently disable it。
总结如下: