Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode script on build to update version number string in Settings.bundle

We'd like to put the current version of the app as a string in the bottom of our options in Settings.app, as a section footer.

I haven't worked with build scripts in Xcode very much, so i need some help on

  1. how to fetch the current version, probably from the info.plist
  2. how to replace a static string, for example CURRENT_VERSION_NO in the Root.plist inside the Settings.bundle

Thanks Maciej.

like image 573
Maciej Swic Avatar asked Jul 28 '11 14:07

Maciej Swic


1 Answers

You can add a run script phase for your target (build phases > add build phase > add run script). Then you will have a shell script where you could use PlistBuddy to get the version string and set it in your other plist.

For example :

/usr/libexec/PlistBuddy -c "print:CFBundleVersion" "$CONFIGURATION_BUILD_DIR/$INFOPLIST_PATH"

will display the version string of your app. If you record this in a variable and set the value on the other plist using Plist Buddy -c set, you will be done.

This would give something like :

versionString=$(/usr/libexec/PlistBuddy -c "print:CFBundleVersion" "$CONFIGURATION_BUILD_DIR/$INFOPLIST_PATH")
/usr/libexec/PlistBuddy -c "Set CURRENT_VERSION_NO $versionString" "$THE_PATH_TO_YOUR_PLIST_FILE"

I never used PlistBuddy -c copy but it should allow you to do this in only one line.

like image 60
iDou Avatar answered Nov 15 '22 07:11

iDou