如何使用Xcode新的“管理版本和内部版本号”设置?

mfuanj7w  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(474)

传统上,我习惯于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表示“版本”)。

new9mtju

new9mtju1#

除非有人有更好的答案,这是我迄今为止所能收集/猜测的...

  1. "Distribute apps in Xcode with cloud signing" WWDC 2021 video提到它只在 * 归档 * 中递增 * 构建版本号 *:
    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
    总结如下:
  • 如果你没有嵌入式框架,那么使用这个特性来增加内部版本号是可以的。但是要记住,你的目标的内部版本号不会被更新。
  • 无论何时需要递增版本号,都需要手动递增。

相关问题