shell 如何在Xcode 11中使用脚本更改构建设置版本控制?

ogq8wdun  于 2023-04-21  发布在  Shell
关注(0)|答案(2)|浏览(274)

由于Xcode 11已经将Version更改为$(MARKETING_VERSION)& Build更改为$(CURRENT_PROJECT_VERSION)
内部版本设置中有新字段

我怎么能改变这个值与脚本由于
xcrun agvtool new-version
xcrun agvtool new-marketing-version
在Xcode 10上不能完美工作
我试过这个https://stackoverflow.com/a/58164679/7332815但不工作
我只能得到正确的值

echo $versionNumber 
echo $buildNumber

但我怎么给它设置新的值呢

8yoxcaq7

8yoxcaq71#

更新2022/08/19
如果使用fastlane到bumping版本

desc "Bump version and build nubmer"
lane :bump_version_and_build_number do |options|
    version_number = options[:version]
    puts version_number
    sh("sed -i '' -e 's/MARKETING_VERSION \\= [^\\;]*\\;/MARKETING_VERSION = #{version_number};/' ../${YOUR_PROJECT_NAME}.xcodeproj/project.pbxproj")
    increment_build_number
end

然后输入推荐行
bundle exec fastlane bump_version_and_build_number version:1.0.1
好吧,我为自己找到了一个解决方案,感谢meetup的一个朋友。
对于版本号x1c 0d1x,我使用了sed -i '' -e 's/MARKETING_VERSION \= [^\;]*\;/MARKETING_VERSION = 3.4.5;/' ${YOUR_PROJECT_NAME}.xcodeproj/project.pbxproj
例如sed -i '' -e 's/MARKETING_VERSION \= [^\;]*\;/MARKETING_VERSION = 3.4.5;/' DemoProject.xcodeproj/project.pbxproj
注意,这不能在方案设置的预动作中工作
至于构建版本

,我使用了xcrun agvtool new-version xxx
例如xcrun agvtool new-version 3.4.5b
您可以在构建阶段中编写这些命令

我不使用xcrun agvtool new-marketing-version 3.4.5b的原因是因为它会将实心数字写入plist。
我同意Manuel在Post中的回答
有了这些,我可以管理多目标的版本
p.s.如果你想这样做,例如,notificationService目标,记得首先更改版本和构建号手册,使Xcode 11将相应的值更改为像这样的变量

当然,你也可以通过在源代码中编辑plist来实现。
这是目前为止我实现的管理多目标版本控制的最接近的方法。

tvokkenx

tvokkenx2#

下面的脚本将设置$MARKETING_VERSION$CURRENT_PROJECT_VERSION类似于xcode,并准备一个存档,最终也将出现在XCode Organizer中。

#!/bin/bash

# Set the version and build numbers
VERSION_NUMBER="2.1.0"
BUILD_NUMBER="29"
APP_NAME="MyApp"
TEAM_ID="ABCDEFGH"

# Set the Xcode project file path
PROJECT_FILE="$APP_NAME.xcodeproj/project.pbxproj"

# Update the MARKETING_VERSION and CURRENT_PROJECT_VERSION values in the project file
sed -i "" "s/MARKETING_VERSION = .*/MARKETING_VERSION = $VERSION_NUMBER;/g" "$PROJECT_FILE"
sed -i "" "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $BUILD_NUMBER;/g" "$PROJECT_FILE"

# Set the archive path
ARCHIVE_DATE=$(date +"%Y-%m-%d")
ARCHIVE_TIME=$(date +"%H.%M")
ARCHIVE_FILENAME="$APP_NAME $ARCHIVE_DATE, $ARCHIVE_TIME.xcarchive"
ARCHIVE_PATH="~/Library/Developer/Xcode/Archives/$ARCHIVE_DATE/$ARCHIVE_FILENAME"

# Archive the Xcode project
xcodebuild \
  -scheme "$APP_NAME" \
  -project "$APP_NAME.xcodeproj" \
  -configuration "Release" \
  -destination "generic/platform=iOS" \
  -archivePath "$ARCHIVE_PATH" \
  archive

相关问题