ios - 如何使用脚本读取 Xcode 11 中的当前应用程序版本

标签 ios xcode sh build-settings xcode11

Xcode 11 之前,我使用了一个脚本来读取当前应用程序版本(针对 AppStore)并帮助我更改 LaunchScreen,因为我们不能为此使用 swift。

sourceFilePath="$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"
versionNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")

sed -i .bak -e "/userLabel=\"APP_VERSION_LABEL\"/s/text=\"[^\"]*\"/text=\"v$versionNumber\"/" "$PROJECT_DIR/$PROJECT_NAME/App/Base.lproj/LaunchScreen.storyboard"

但在 Xcode 11 中,项目的build设置中有一个新部分,称为 Versioning

enter image description here

并且 CFBundleShortVersionString 自动更改为 $(MARKETING_VERSION)。 Xcode 会自动处理该问题,我不想手动将其更改为静态数字,让 Xcode 完成它的工作。

11

所以问题是我如何访问这个新的 MARKETING_VERSION 并使用 run script 将它设置到我的 launchScreen 标签?

最佳答案

Xcode 11/12

终端项目中的bash脚本中,您可以使用:

应用版本

xcodebuild -showBuildSettings | grep 营销版本 | tr -d 'MARKETING_VERSION ='//会显示 1.1.6

构建版本

xcodebuild -showBuildSettings | grep CURRENT_PROJECT_VERSION | tr -d 'CURRENT_PROJECT_VERSION ='//会显示 7

或者(不要忘记将 YouProjectName 更改为您的项目名称):

应用版本

cat YouProjectName.xcodeproj/project.pbxproj | grep -m1 'MARKETING_VERSION' |切-d'='-f2 | tr -d ';' | tr -d ' '

构建版本

cat YouProjectName.xcodeproj/project.pbxproj | grep -m1 'CURRENT_PROJECT_VERSION' |切-d'='-f2 | tr -d ';' | tr -d ' '

较慢的方法(Thx Joshua Kaden):

应用版本

xcodebuild -project YouProjectName.xcodeproj -showBuildSettings | grep“MARKETING_VERSION” | sed 's/[ ]*MARKETING_VERSION =//'

构建版本

xcodebuild -project YouProjectName.xcodeproj -showBuildSettings | grep“CURRENT_PROJECT_VERSION” | sed 's/[ ]*CURRENT_PROJECT_VERSION =//'

关于ios - 如何使用脚本读取 Xcode 11 中的当前应用程序版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722677/

相关文章:

ios - 如何在没有任何延迟的情况下立即运行 segue 之后的动画?

ubuntu - 在 Ubuntu 关机时运行 Shell 脚本

ios - 如何在 Swift 的表格 View 中添加 AdMob Native 广告(使用 Storyboard)

iOS 应用程序。按字母顺序获取 Facebook 好友

objective-c - iOS:AutoresizingMask 使用数组?

ios - Xcode - 如何使用属性检查器中的本地化字符串

iphone - 如何以编程方式在 iPhone 上创建将同步到 iCal 的新日历

ios - 在 Swift 中使用 SPUserResizableView

bash - 执行第一个脚本后从一个脚本传递变量值,我们手动执行第二个脚本

linux - 每天在 bash 中提取文件行