Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between Xcode version (CFBundleShortVersionString) and build (CFBundleVersion)

App Target Summary

In Xcode 4, I see this for my target summary:

The "Version" input corresponds to CFBundleShortVersionString in the info.plist file, and the "Build" input corresponds to CFBundleVersion.

What's the difference between these two? I see a lot of people on the internet wanting to put the same value in for both, and my suspicion is that is for backwards compatability.

I have two questions:

1) If I were starting from scratch, what would be the best practice for versioning your app?

2) In all previous releases of my app, I only used CFBundleVersion. In order to not mess up the upgrade process, should I continue to increment CFBundleVersion the same way I have been or is it possible to switch to the "right way", assuming one exists?

like image 736
Philip Walton Avatar asked Jul 29 '11 17:07

Philip Walton


3 Answers

The Apple document "Information Property List Key Reference" says that CFBundleShortVersionString represents a release version, whereas CFBundleVersion represents any build, released or not. Also, CFBundleShortVersionString can be localized, though I don't know why you'd want to, since they say it is supposed to be "a string comprised of three period-separated integers". For a release build, it would be reasonable to make the two numbers the same. For a development build, you might tack something else on to the CFBundleVersion, maybe another dot and integer.

like image 196
JWWalker Avatar answered Nov 07 '22 15:11

JWWalker


To JWWalker's question on why you would want to localize CFBundleShortVersionString, that would be the decimal separator. For example in locales where the decimal separator is actually a comma, the version "1.5" would be "1,5".

like image 3
Arjun Avatar answered Nov 07 '22 13:11

Arjun


Quick Fix:

Just add the CFBundleShortVersionString to the plist file and edit your version.

  1. Reveal your InfoPlist.strings
  2. Highlight it and paste the code below in (assuming its in source code mode)

{"CFBundleShortVersionString" = "1.1";}

  1. Change the 1.1 to whatever your new build is.
  2. Build & submit with no more error!

enter image description here

like image 1
Louie Avatar answered Nov 07 '22 13:11

Louie