CFBundleShortVersionString missing error when submitting app to Store (iOS)

  • 1
  • Problem
  • Updated 6 years ago
  • Solved
My app already is in the Apple App-store, then i made some changes and added new functionality to the app.
Build the app using the PGB service and tested is on my device.
Everything works well and the i changed the signing key to my production key en build the project again.

After that i uploaded my IPA file to the app-store with application loaded from apple.
No matter what i try, it just gives me the error that the bundle is invalid.
Reason: The info.plist file is missing the required key: CFBundleShortVersionString.

I extracted the IPA an looked into the info.plist file and there is no CFBundleShortVersionString.
So this error may be right you say.
Then i looked into the info.plist file from my previous version that is already in the app-store, also no CFBundleShortVersionString present....

My previous version wat 1.1.0 now i updated it to 1.2.0, below my versions in the config.xml


<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "XX.XXXXXX.XXX"
versionCode = "120"
version = "1.2.0" >


In i-tunes connect i set the same version code, 1.2.0
Does anybody know whats the problem here? I worked like a charm, now it fails every time.

Also i tried to add the gap:config-file with the CFBundleVersions in it to the config.xml, a solution i found elsewhere online.
This also didn't help, the error changed to: "The value for the Info.plist key CFBundleShortVersionString is not of the required type for that key"

Below my config.xml file:


<?xml version="1.0" encoding="UTF-8" ?>

<widget xmlns = "http://www.w3.org/ns/widgets"
xmlns:gap = "http://phonegap.com/ns/1.0"
id = "XX.XXXXXX.XXX"
versionCode = "114"
version = "1.1.4" >

<name> XXXXXXXX </name>

<description>
XXXXXXXX
</description>

<author href="XXXXXXXX" email="XXXXXXXX">
XXXXXXXX
</author>

<gap:config-file platform="ios" parent="CFBundleVersion">
<string>1.1.4</string>
</gap:config-file>

<gap:config-file platform="ios" parent="CFBundleShortVersionString">
<array>
<string>1.1.4</string>
</array>
</gap:config-file>

<!--PLATFORMS-->
<gap:platform name="ios" />
<gap:platform name="android" />

<!-- iPhone and iPod touch -->
<gap:splash src="res/icon/Default.png" gap:platform="ios" width="320" height="480" />
<gap:splash src="res/icon/Default@2x.png" gap:platform="ios" width="640" height="960" />

<!-- iPhone 5 / iPod Touch (5th Generation) -->
<gap:splash src="res/icon/Default-568h@2x.png" gap:platform="ios" width="640" height="1136" />

<!-- iPhone / iPod Touch -->
<icon src="res/icon/icon-57.png" gap:platform="ios" width="57" height="57" />
<icon src="res/icon/icon-60.png" gap:platform="ios" width="60" height="60" />
<icon src="res/icon/icon-60@2x.png" gap:platform="ios" width="120" height="120" />

<!-- Settings Icon -->
<icon src="res/icon/icon-small.png" gap:platform="ios" width="29" height="29" />
<icon src="res/icon/icon-small@2x.png" gap:platform="ios" width="58" height="58" />

<!-- Spotlight Icon -->
<icon src="res/icon/icon-40.png" gap:platform="ios" width="40" height="40" />
<icon src="res/icon/icon-40@2x.png" gap:platform="ios" width="80" height="80" />

<!-- Android -->
<icon src="res/icon/ldpi.png" gap:platform="android" gap:qualifier="ldpi" />
<icon src="res/icon/mdpi.png" gap:platform="android" gap:qualifier="mdpi" />
<icon src="res/icon/hdpi.png" gap:platform="android" gap:qualifier="hdpi" />
<icon src="res/icon/xhdpi.png" gap:platform="android" gap:qualifier="xhdpi" />
<icon src="res/icon/xxhdpi.png" gap:platform="android" gap:qualifier="xxhdpi" />
<icon src="res/icon/xxxhdpi.png" gap:platform="android" gap:qualifier="xxxhdpi" />

<!-- PLUGINS -->
<gap:plugin name="org.apache.cordova.device" version="0.2.8" />
<gap:plugin name="org.apache.cordova.geolocation" version="0.3.7" />
<gap:plugin name="org.apache.cordova.network-information" version="0.2.7" />
<gap:plugin name="com.phonegap.plugin.statusbar" version="1.1.0" />
<gap:plugin name="dk.interface.cordova.plugin.googlenavigate" version="0.1.2" />
<gap:plugin name="org.apache.cordova.splashscreen" version="0.2.7" />

<!--PERMISSION-->
<feature name="http://api.phonegap.com/1.0/geolocation" />
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>

<!--PREFERENCES-->
<preference name="StatusBarOverlaysWebView" value="true" />
<preference name="StatusBarBackgroundColor" value="#E30079" />
<preference name="UIWebViewBounce" value="false" />
<preference name="EnableLocation" value="true" />

<preference name="phonegap-version" value="3.5.0" /> <!-- all: current version of PhoneGap -->
<preference name="orientation" value="portrait" /> <!-- all: default means both landscape and portrait are enabled -->
<preference name="target-device" value="handset" /> <!-- all: possible values handset, tablet, or universal -->
<preference name="fullscreen" value="true" /> <!-- all: hides the status bar at the top of the screen -->
<preference name="webviewbounce" value="false" /> <!-- ios: control whether the screen 'bounces' when scrolled beyond the top -->
<preference name="prerendered-icon" value="true" /> <!-- ios: if icon is prerendered, iOS will not apply it's gloss to the app's icon on the user's home screen -->
<preference name="stay-in-webview" value="false" /> <!-- ios: external links should open in the default browser, 'true' would use the webview the app lives in -->
<preference name="ios-statusbarstyle" value="black-opaque" /> <!-- ios: black-translucent will appear black because the PhoneGap webview doesn't go beneath the status bar -->
<preference name="detect-data-types" value="true" /> <!-- ios: controls whether data types (such as phone no. and dates) are automatically turned into links by the system -->
<preference name="exit-on-suspend" value="false" /> <!-- ios: if set to true, app will terminate when home button is pressed -->
<preference name="show-splash-screen-spinner" value="false" /> <!-- ios: if set to false, the spinner won't appear on the splash screen during app loading -->
<preference name="auto-hide-splash-screen" value="false" /> <!-- ios: if set to false, the splash screen must be hidden using a JavaScript API -->
<preference name="AutoHideSplashScreen" value="false" />
<preference name="android-minSdkVersion" value="7" /> <!-- android: MIN SDK version supported on the target device. MAX version is blank by default. -->
<preference name="android-installLocation" value="auto" /> <!-- android: app install location. 'auto' will choose. 'internalOnly' is device memory. 'preferExternal' is SDCard. -->

<!--ACCESS-->
<access origin="*" />

</widget>
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
  • frustrated

Posted 6 years ago

  • 1
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
Got the problem solved!!

I added 'CFBundleShortVersionString'

<gap:config-file platform="ios" parent="CFBundleShortVersionString">
<string>114</string>
</gap:config-file>
Photo of Pablo Jadzinsky

Pablo Jadzinsky

  • 1 Post
  • 0 Reply Likes
When editing the plist, I don't see 'CFBundleShortVersionString' as an option. I do see however 'Bundle versions strings, short'. Did you explicitly change the key to be 'CFBundleShortVersionString'?

Thanks
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
Yes exactly like you mention, i also didn't see it in the plist also.
But meanwhile my app is in the app-store, this only suceeded after i added the CFBundleShortVersionString option in my config.xml
So i can confirm it workes!
Photo of dev.animion

dev.animion

  • 5 Posts
  • 0 Reply Likes
yes! working!
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
where you add the code in xml file, in wich line i have the same problem?
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
I've put it just below the opening of the widget tag, above the name tag in my code.
But i don't think it matters as long as it is in the widget tag, like al the other tags must be.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
what it means 114 i put the same number, thank you for youre help
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
masqver

masqver

Belico

<!-- iPad -->

<!-- Settings Icon -->

<!-- Spotlight Icon -->

<!-- Define app splash screen for each platform. -->
<!-- iPhone and iPod touch -->

<!-- iPhone 5 / iPod Touch (5th Generation) -->

<!-- iPad -->

<!-- Retina iPad -->
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
The number 114 is the version number of my app: 1.1.4
Only without the dots in between.
The number doesn't matter, it just has to be higher than the previous one u used.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
ok i`ll try you're the only help, thank you so so much
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
I think you're trying to post your config.xml in the comment above.
Use the < code > tag, otherwise we can't read is. You can edit you're comment and place the code-tag around it.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
you can give you're e-mail?
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
Try placing you're config.xml to pastebin.com
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
I've edited you're config.xml: http://pastebin.com/D1BsZA8w
The link expires in one hour!

Changes i made:
- The versionCode cannot include dots
- I've added the CFBundleShortVersionString, just below the version info.

Please delete/edit your pastebin entry, you're e-mail is exposed.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
ok thank you so much , i'll upload right now
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
works perfect thank you so so much
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
You're welcome, been struggling for 3 days myself with this problem.
Still don't know why it didn't happen before.
Think Apple or PhoneGap changed something in there processes.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
yes the process with apple is terrible in special technical support they have to improve to much, and believe me it's for very firts time that i recive help, thank you Pierre.
Photo of Carlos A Quintero

Carlos A Quintero

  • 10 Posts
  • 0 Reply Likes
Photo of Chris Bechard

Chris Bechard

  • 68 Posts
  • 0 Reply Likes
I am getting this error now too, but it says my upload was successful. Will apple approve my app if I do not fix it, or is this fix just to remove the warning message?
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
I got the error while uploading the IPA file with Application Loader.
In that process they wil check for the version tags and values.
I could not proceed the upload process unless i fixed the error by adding the CFBundleShortVersionString tag.
After that i uploaded again, no errors and application loaded shows it was successful.
So if you didn't got any error that stopped the upload process then i think is it OK.
Photo of Bitcoinmillionaire

Bitcoinmillionaire

  • 38 Posts
  • 0 Reply Likes
Thanks guys this saved me time!

Bitcoinmillionaire
Web app: http://www.bitcoinmillionaire-app.com
Android app: http://goo.gl/V7ZqgJ
iOS app: http://bitcoinmillionaire-app.launchr...
Photo of Henk Kelder

Henk Kelder

  • 46 Posts
  • 5 Reply Likes
This appears to be a workaround. not a real solution.
Photo of ismael jimoh

ismael jimoh

  • 4116 Posts
  • 192 Reply Likes
This has been brought up and should be looked into soon.

Would update you all when I have more word on it.

Sorry everyone.
Photo of Alan Neveu

Alan Neveu, Champion

  • 213 Posts
  • 11 Reply Likes
Can someone please provide a clear example of what you added to your config.xml to solve this? And where in the file did you put the new lines? Also, does the actual string value have to be something specific? What does "114" actually mean? Is that a string version of the build of that user's app? Or is that some magic number that we should use?
Photo of Pierre Munnichs

Pierre Munnichs

  • 11 Posts
  • 4 Reply Likes
You can find a clear example in my second comment, where i put: 'got the problem solved' in.
Just copy the code in my reply and edit the 114 number to you're own number.
It's not some kind of magic number, it's just my app version without the dots (dots not allowed)

This conversation is no longer open for comments or replies.