3

我想增加 xcode 项目中的用户定义变量。是否有任何脚本来增加用户定义的变量。

我有一个用户定义的变量"PATCH"。在 info.plist 中,我将此变量分配给 Bundle 版本。

我希望这个用户定义的变量在我使用不同的配置归档项目时自动递增。

我附上了截图,希望它能帮助你轻松理解我的问题:

Xcode 截图:

构建设置 - Xcode

列表截图:

在此处输入图像描述

我也通过这些链接:

Xcode 自动增量构建版本。

StackOverflow 问题

但是这些问题/链接不符合我的要求。我只需要通过脚本访问用户定义的变量。如果有人有解决方案,请帮助。任何帮助表示赞赏。

4

3 回答 3

-1

谢谢@Philippe,我制作了一个 bash 脚本:

# - RELEASE EBF737881ECAECD400F5A5DF
# - DEBUG EBF737871ECAECD400F5A5DF

currentVersion=$(/usr/libexec/PlistBuddy -c "print :objects:EBF737871ECAECD400F5A5DF:buildSettings:FC_VERSION" ../FormaCar.xcodeproj/project.pbxproj)
newVersion="${currentVersion%.*}.$((${currentVersion##*.}+1))"
/usr/libexec/PlistBuddy -c "set :objects:EBF737871ECAECD400F5A5DF:buildSettings:FC_VERSION $newVersion" ../FormaCar.xcodeproj/project.pbxproj
/usr/libexec/PlistBuddy -c "set :objects:EBF737881ECAECD400F5A5DF:buildSettings:FC_VERSION $newVersion" ../FormaCar.xcodeproj/project.pbxproj
echo "Old version: $currentVersion. Version bumped to: $newVersion"

其中FC_VERSION是用户定义的参数,并以x.x.x格式保存版本。

并且在Fastfile

lane :bumpMinorVersionNumber do
  sh "./bumpMinorVersionNumber.sh"
end

此脚本会影响 FC_VERSION 设置的次要版本并通过 fastlane 工作

更新:

不幸的是,PlistBuddy 将 .pbxproj格式转换为 xml 格式的 plist,因此源代码控制获取堆栈并且信息丢失了。所以我不能使用这个解决方案(

感谢https://stackoverflow.com/a/56179405/5790492https://nshipster.com/xcconfig/
我已经创建了xcconfig文件,将其添加到信息选项卡中的项目中。为 fastlane 添加了插件以与 xcconfig 一起使用。现在车道看起来像:

currentBuildNumber = get_xcconfig_value(path: 'fastlane/VersionsConfig.xcconfig',
                                        name: 'FC_BUILD')
newBuildNumber = currentBuildNumber.to_i + 1
update_xcconfig_value(path: 'fastlane/VersionsConfig.xcconfig',
                      name: 'FC_BUILD',
                      value: newBuildNumber.to_s)
UI.important("Old build number: #{currentBuildNumber}. Build number bumped to: #{newBuildNumber}")

它就像一个魅力!

于 2021-10-10T21:45:14.647 回答
-1

您需要更新project.pbxproj*.xcodeproj/ 中的文件。

例如,如果您需要更新DebugPATCH 的内部版本号。首先找到构建的标识符project.pbxprojDebug你应该得到类似 13B07F941A680F5B00A75B9A 的东西。然后你可以做

/usr/libexec/PlistBuddy -c "print :objects:13B07F941A680F5B00A75B9A:buildSettings:PATCH" project.pbxproj
# which should give 90

然后您可以使用(首先制作 project.pbxproj 的备份副本)对其进行更新:

/usr/libexec/PlistBuddy -c "set :objects:13B07F941A680F5B00A75B9A:buildSettings:PATCH 91" project.pbxproj

再次验证:

/usr/libexec/PlistBuddy -c "print :objects:13B07F941A680F5B00A75B9A:buildSettings:PATCH" project.pbxproj
# which should give 91

还要检查xcode。

于 2021-10-06T19:43:41.087 回答
-5

我建议您使用fastlane之类的东西来完成此操作(有一个称为increment_build_number专门执行此操作的操作,操作页面上的更多信息)。
从代码的角度来看,如果您需要访问该变量,我使用类似:
NSString *buildVersion = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"BUILD_VERSION"];

另外,我注意到在您使用的 plist 文件中${PATCH}......我认为它应该与您项目中的用户定义变量具有相同的名称。

于 2016-07-12T10:39:03.150 回答