如何设置具有相同捆绑版本的两个目标的 XCode 项目

Posted

技术标签:

【中文标题】如何设置具有相同捆绑版本的两个目标的 XCode 项目【英文标题】:how to setting XCode project that have two target with same bundle version 【发布时间】:2020-11-29 19:32:35 【问题描述】:

因此,如果我在 appstoreconnect 上上传并在每个目标上有不同的捆绑版本,它将被苹果忽略。 ignored info when uploading to appstoreconnect

PLIST="$PROJECT_DIR/$INFOPLIST_FILE"
PLB=/usr/libexec/PlistBuddy
LAST_BUILD_VERSION=$($PLB -c "Print CFBundleVersion" "$PLIST")
IFS=. components=($LAST_BUILD_VERSION)
major=$components[0]
minor=$components[1]
micro=$components[2]
build=$components[3]
build_plus=$((build + 1))
old_build="$major.$minor.$micro.$build"
new_build="$major.$minor.$micro.$build_plus"
$PLB -c "Set :CFBundleVersion $MARKETING_VERSION.$build_plus" "$PLIST"

我已经制作了一个运行脚本来更改一个目标的最后一个数字,但我不知道使用运行脚本更改另一个目标

如果它是 5.5.10.1,那么它会将其更改为 5.5.10.2 作为主要目标。但另一个目标没有改变

【问题讨论】:

【参考方案1】:

我认为您可以在项目级别使用用户定义设置,然后将该值用于所有目标。

【讨论】:

能否给一步一步的使用User-Defined? @dimaskpz 我更新了我的答案,请看一下。但是为什么不对所有其他目标使用相同的运行脚本呢? 感谢您的教程。我不用于另一个目标的原因是我不知道如何将目录获取到另一个 PLIST 目标。使用此变量 $INFOPLIST_FILE 的主要目标的原因。你对我的运行脚本有什么建议吗?如果它仅使用 runscript 工作,我会很高兴 每个目标都包含它自己的Info.plist 文件,并且该文件的路径也可以更改。您可以使用$INFOPLIST_FILE 获取Info.plist 文件的路径。对于运行脚本,您知道每个目标都可以包含自己的运行脚本吗?在特定目标中添加运行脚本并使用 $INFOPLIST_FILE 将为您提供该目标的 Info.plist 的正确位置。 不稳定的解决方案。版本的“常规”选项卡中的任何编辑(未禁用字段)都会破坏此绑定。

以上是关于如何设置具有相同捆绑版本的两个目标的 XCode 项目的主要内容,如果未能解决你的问题,请参考以下文章

Vapor Xcode 项目中的两个几乎相同的目标

如何制作一个应用程序的两个版本并让它们共享相同的设置?

Fastlane 与多个团队的多个捆绑 ID 匹配

我可以拥有两个具有不同捆绑 ID 和相同名称的应用程序吗?

在 xcode 中使用单个目标管理多个环境?

具有相同代码库的两个 iPhone 应用程序