更新于 2022/08/19
如果使用 fastlane 来升级版本号
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 \\= [^\\;]*\\
increment_build_number
end
只需在命令行中输入以下内容:
bundle exec fastlane bump_version_and_build_number version:1.0.1
好的,我已经为自己找到了解决方案,感谢Meetup上的一个朋友。
关于版本号:
我用了这个:
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
你可以将这些命令写在“Build Phases”中。
我不使用 xcrun agvtool new-marketing-version 3.4.5b
是因为它会将固定的数字写入plist中。
我同意Manuel在 Post 中的答案。
通过这些,我可以管理多个目标的版本控制。
P.S. 如果你想对notificationService目标执行此操作,记得手动更改版本和构建号,以便Xcode 11将相应值更改为类似于这样的变量:
或者你当然也可以通过编辑源代码中的plist来实现。
这是我迄今为止实现多目标版本控制的最接近方法。
sed -i'' -e "s/MARKETING_VERSION = .*;/MARKETING_VERSION = $VERSION;/" $PROJECT_PATH/project.pbxproj
。 - gabe