ios - Settings.bundle 版本号正在更新为 $(MARKETING_VERSION)

标签 ios scripting versioning xcode11 settings.bundle

我有一个应用程序,当我从

递增时,它会自动设置版本

XCode > 常规 > 版本

但是最近我将 XCode 更新到了 11.0,似乎脚本没有按预期工作:

version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/MyApp/Info.plist`
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

以上脚本假设会自动更新版本,并且在“设置”>“应用程序”中可见。

enter image description here

但问题是这个脚本需要做任何更改才能从 XCode 自动更新版本号吗?

目前,当版本从 XCode > General > Version 递增时,它会被脚本替换为 $(MARKETING_VERSION),这是不正确的。

最佳答案

版本字符串 $MARKETING_VERSION 以及版本号 $CURRENT_PROJECT_VERSION 现在在构建过程中作为环境变量公开,因为它们现在保留在 中。 pbxproj 配置。

您应该能够实现您想要的目标:

version="$MARKETING_VERSION ($CURRENT_PROJECT_VERSION)"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

关于ios - Settings.bundle 版本号正在更新为 $(MARKETING_VERSION),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58423885/

相关文章:

assemblies - 我希望我的 DotNetNuke 模块在尽可能多的版本下工作,同时避免程序集绑定(bind)重定向

java - 将版本保留在 API 中有什么利弊?

iOS AFNetworking 响应序列化器 : Many serializers for each response, 或一个序列化器来统治它们?

ios - Bootstrap 3 导航栏在加载为 xcode 应用程序后不会在 iPhone 5C 中折叠?

ios - 在 iOS 7 中动态更改 UIViewController 的 View

linux - 如何让 Linux 命令和脚本在 Cygwin 上运行?

versioning - 您喜欢的产品版本号样式是什么?为什么?

iOS,将 writeToFile :atomically:YES never fail?

c++ - 用脚本语言实现 lambda

windows - 我应该使用哪个版本的 MSXML?