I was trying to upload a pre-release build to iTunes to use it with the new iTunes TestFlight integration.
The way I have my continuous integration builds setup is that
The build number must be a "period-separated list of at most three non-negative integers." See Apple's documentation on CFBundleVersion.
When validating my app with "Version 1.0.0" and "Build 1.0.0-0" using Xcode 11.5, I received this message:
"Unable to process application at this time due to the following error: This bundle is invalid. The value for key CFBundleVersion [1.0.0-0] in the Info.plist file must be a period-separated list of at most three non-negative integers. Please find more information about CFBundleVersion at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion."
Just a quick note, I faced this issue in archive when the SVN version number merge with the build version number. In my case I had 1.0(6771M) and the "M" which means SVN Modifications are there in the project, gave me an error when uploading the build.
So make sure you commit everything and prepare the archive.
iTunesConnect doesn't allow letters in the version numbers. I don't know if this is new with the TestFlight integration or if it's been like that for a while.
We used to use letters in our version numbers to denote internal builds. Guess we aren't anymore.
Unfortunately it's still the case. I used to have:
buildNumber=$(git rev-list HEAD | wc -l | tr -d ' ')<br>
buildHash=$(git rev-parse HEAD | cut -c1-4)`
But only buildNumber can be used now. :(