CFBundleVersion for beta builds

I'm trying to wrap my head around semantic versioning, and in particular how the CFBundleVersion value is used in the beta build process for iOS-land.


After doing an Archive of my app, I tried to upload it to the App Store from Xcode, and was greeted with the error:


"Unable to process application at this time due to the following error: This bundle is invalid. The value for key CFBundleVersion [1.0.0b12] in the Info.plist file must be a period-separated list of at most three non-negative integers."


But this seems to be at odds with the documentation for CFBundleVersion, which states:


"While developing a new version of your app, you can include a suffix after the number that is being updated; for example

3.1.3a1
. The character in the suffix represents the stage of development for the new version. For example, you can represent development, alpha, beta, and final candidate, by
d
,
a
,
b
, and
fc
. The final number in the suffix is the build version, which cannot be
0
and cannot exceed
255
. When you release the new version of your app, remove the suffix."


So... what gives here? Does the "b12" need to be stripped from the CFBundleVersion before submitting it to the app store for TestFlight use? Or is there a way I can upload betas of my 1.0.0 release to TestFlight?

Your number is actually 1.0.0 - docs say this about that:


"If the value of the third number is

0
, you can omit it and the second period."


"The final number in the suffix is the build version, which cannot be

0
and cannot exceed
255
."

Just to further muddy the waters, the documentation is inconsistent with reality.


I've been using four numbers separated by periods for years now. For example, CFBundleShortVersionString 2.5, CFBundleVersion 2.5.0.0. Or 2.5.1 / 2.5.1.0 etc.

CFBundleVersion for beta builds
 
 
Q