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

Solution 1:

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.

Solution 2:

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".

Solution 3:

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

Solution 4:

See the Apple documentation on uploading binaries.

Numbering versions and builds: iTunes Connect extracts its prerelease version number and build number from the binary. The prerelease version number is the Xcode Version number, or the "Bundle version string, short" key in the Info.plist. The build number is the Xcode Build number, or the "Bundle version" key in the Info.plist. The prerelease version number and build number will be shown on the Prerelease tab, as described in Viewing Builds.

Uploading a Binary For An App