CFBundleVersion dans l'erreur de téléchargement Info.plist

108

"Le binaire que vous avez téléchargé n'était pas valide. La clé CFBundleVersion dans le fichier Info.plist doit contenir une version supérieure à celle de la version précédemment téléchargée."

J'obtiens cette erreur lorsque je viens télécharger mon application.

J'ai défini la version mise à jour sur 1.2 sur iTunes Connect et j'ai également mis à jour le .plistfichier sur 1.2.

Je ne comprends pas pourquoi j'obtiens cette erreur. Toute aide serait appréciée. Merci.

Adam H
la source
Pourquoi ne pas essayer de le régler sur, disons, 1.2.1?
Nikita Rybak
J'ai essayé de nombreuses combinaisons. Aucun travail. Cette erreur revient sans cesse.
Adam H
1
Et quelle est la version précédemment téléchargée (telle qu'elle se trouve dans le fichier Info.plist de l'application actuellement en cours d'expédition)?
Costique
Avez-vous résolu ce problème? Le même problème m'est arrivé tout d'un coup. C'est frustrant.
Wayne Lo
Je viens de recevoir un e-mail avec cette erreur et il s'avère qu'une de mes anciennes versions, qui était bloquée dans l'ITC en tant que "traitement" pendant la semaine dernière, a finalement été traitée. Quand il est devenu bloqué pour la première fois, j'ai soumis à nouveau une autre version avec un numéro de version incrémenté, donc lorsque l'ancien a finalement été traité, il a déclenché l'erreur.
blwinters

Réponses:

210

Il y a au moins 1 bogue connu dans le serveur de téléchargement d'Apple qu'ils n'ont pas corrigé depuis plus de 12 mois. Choses à prendre en compte:

  1. Apple supprime tous les zéros non significatifs à l'intérieur du numéro de version; c'est-à-dire que la "chaîne entière" n'est PAS traitée comme un nombre, à la place les bits entre les points sont traités comme des nombres SÉPARÉS. Par exemple, "1.02" est traité par Apple comme "1.2". Donc, pour Apple, 1.02 est PLUS GRAND QUE 1.1
  2. Apple est parfois «confus» et semble comparer votre application téléchargée à la version d'une application DIFFÉRENTE que vous avez précédemment téléchargée. C'est arrivé à beaucoup de gens, et je l'ai vu moi-même plusieurs fois
  3. Apple est censé comparer la "CFBundleVersion" (c'est-à-dire "Bundle version" et non la "Bundle versions string, short"); ne vous mêlez pas.
  4. Souvent, la seule solution viable est de bosse le nombre avant (par exemple le "2" dans "2.4" - augmentez-le à "3")
  5. Le numéro de version que vous téléchargez n'est pas lié au numéro de version qui apparaît dans iTunes - vous pouvez y mettre tout ce que vous voulez, et c'est ce que vos utilisateurs verront
  6. ... sauf, si vous indiquez également le numéro de version "réel" dans votre application, l'utilisateur verra la CFBundleVersion (généralement, dépend de la façon dont vous la codez), plutôt que la version iTunes (qui - je pense - ne peut pas être accessible depuis dans votre application)
Adam
la source
1
CFBundleVersion est ce qui dans xcode 4.5 est étiqueté "Build", et PAS "Version"! La version finit par étiqueter "CFBundleShortVersionString" dans le fichier Info.plist. Donc, en effet, vous devez fournir une valeur plus élevée pour Build qu'auparavant.
RickJansen
+1 utile. Je l'ai utilisé 1.02pour ma version précédente. Et corrigez-le en utilisant cette réponse. Je vous remercie.
Praveenkumar
Cette réponse doit être ajoutée dans la FAQsection sur la façon de soumettre une application à l'App Store. :))
danypata
@Adam: Comme je l'ai lu CFBundleShortVersionString, le numéro de version et le numéro de version que vous avez fournis dans iTunes Connect doivent correspondre. Cela signifie que si vous affichez votre numéro de version dans l'application que vous utilisez CFBundleShortVersionString. Le CFBundleVersiondevrait également être augmenté et c'est celui qu'Apple utilise pour déterminer si vous soumettez une version mise à jour de votre application.
test le
Apple a récemment redéfini ce que signifient toutes leurs chaînes, d'une manière NON rétrocompatible.
Adam le
28

Mettez à jour le numéro de build. Le numéro de version est important, mais le numéro de version fait toute la différence. Par exemple, ma version initiale d'une application était:

version #: 1.0
build #:   1.0

Cependant, lorsque j'ai essayé de télécharger la version suivante, c'est à dire

version #: 1.1
build #:   1.0

Il n'accepterait pas le téléchargement. En incrémentant simplement le build # à 1.1, le téléchargement a été accepté.

Le chimpanzé fou
la source
Parfait ... changer la version # l'a fait pour moi, ce qui est génial car je voulais vraiment garder ma version groupée et la version iTunes synchronisées.
Aaron Hayman
9

Xcode 4 pensera que vous souhaitez télécharger à nouveau la même version si vous ne réarchivez pas l'application. Même si vous modifiez la version du bundle et reconstruisez, le téléchargement échouera. N'oubliez pas de faire une " Archive " dans le menu Produit!

Patrice Gagnon
la source
7

Beaucoup de réponses ici m'ont finalement aidé, mais ce n'est que lorsque j'ai vu le numéro de «version» exact qu'Apple comparait.

  1. Accédez à iTunes Connect -> Gérez vos applications
  2. Choisissez l'application dont vous souhaitez vérifier la version précédente
  3. Cliquez sur le bouton bleu intitulé Afficher les détails
  4. Cliquez sur le lien intitulé Détails binaires
  5. Trouvez la valeur donnée pour la version du bundle

Même si je pensais avoir soumis le numéro de version 1.0.1, le nombre réel stocké par Apple était 101. Certains des commentaires ci-dessus m'ont fait croire que je devais changer ma version en 2.0 (20) ou 1.5 (15) ou 1.2 (12 ) - ce sont tous moins de 101 comme vous pouvez le voir. La mise à jour de mon numéro de version 102 (sans les points) a résolu le problème.

Kyle Hayes
la source
6

Cet article souligne que le numéro de version tel qu'il apparaît dans l'App-Store n'est pas nécessairement le même que le numéro de version du bundle. Lorsque vous affichez les détails de votre application dans iTunes, il existe un lien nommé «Détails binaires». Cette page affiche la version du bundle. L'une des applications sur lesquelles je travaillais était à la version 1.0, mais sa version bundle était 2.0. Le téléchargement d'un bundle avec la version 1.1 a échoué, mais la version 2.1 a fonctionné.

Il existe donc une version d'application et une version groupée. Ce problème est lié à la version du bundle.

Pieter Witvoet
la source
5

Il semble que la confusion soit causée par le format des nombres. La version du bundle n'est pas une décimale. C'est une version (ou build peut-être) donc 1.11 est en fait "un point onze". Par conséquent, 1,11 est supérieur à 1,2. J'ai eu du succès en utilisant 1,20 dans ce cas.

Gavin
la source
4

Cela peut généralement être dû à l'absence de numéro de version. Donc, ajoutez le numéro de version sous Identité et vérifiez également le numéro de build.

entrez la description de l'image ici

Continuez à coder ......... :)

Krishna Raj Salim
la source
3

Pour moi (Xcode 4.5) changer le numéro de build a résolu le problème. définissez les versions sur 1.0.2 ... 2.0.2 etc. puis augmentez build # (Adam 3 points me donne un idia où chercher).

setdvd
la source
2

Vous devriez pouvoir vous connecter à iTunes Connect et voir la version actuelle de l'application (y compris celles que vous avez soumises mais qui ne sont pas en ligne). Vérifiez que vous n'avez pas soumis auparavant une version avec un numéro de version supérieur (ou identique).

Danny Tuppeny
la source
Ceci est trompeur; Apple ne se compare PAS simplement à la version iTunesConnect. cf la réponse de Pieter ci-dessous pour une réponse plus précise.
Adam
@Adam À partir de maintenant (2014-05), Apple compare effectivement le (s) numéro (s) de version interne de votre application iOS avec le numéro de version d'iTunesConnect. En cas de discordance, vous obtenez ce message d'avertissement (pas une erreur): Version Mismatch - Neither CFBundleVersion ['201405030503'] nor CFBundleShortVersionString ['201405030503'] in the Info.plist match the version of the app set in iTunes Connect ['1.0.0'].Mais cette comparaison iTunesConnect n'est pas la cause du problème dans cette question. La comparaison iTunesConnect est un simple avertissement, pas une erreur de blocage.
Basil Bourque
2

J'ai passé quelques heures à essayer de résoudre ce problème. J'ai vérifié de toutes mes forces pour m'assurer que la CFBundleVersion était bien supérieure à l'ancienne version, en ouvrant le info.plist sur un éditeur de texte, obtenir des informations sur la cible et lire la version sur les propriétés, demandé à ma femme de lire la version sur iTunes pour confirmer que je n'ai pas été frappé par une Alzheimer antérieure inattendue.

En fin de compte, cela a en quelque sorte fait l'affaire. Mon ancienne version était la 1.0.4. J'ai essayé 1.3.5, 1.4.5 etc .; aucun n'a fonctionné. Mais assez surprenant, lorsque je suis entré dans 2.0.0, Application Loader aime ce qu'il a vu et l'a téléchargé. Est-ce dû à un bogue dans le chargeur d'application?

Wayne Lo
la source
2

Dans le résumé des cibles à côté du numéro de version dans xcode4 est une construction, j'ai commencé cela à 1, j'incrémente chaque fois que je fais un téléchargement binaire, cela a résolu le problème pour moi

hache
la source
C'était aussi mon problème, le message d'erreur est très trompeur!
mj662
J'ai aussi eu ce problème. C'est incroyablement frustrant que le message soit si trompeur. J'ai perdu la majeure partie de mon après-midi. Merci pour la réponse utile.
Joel Anair
2

Si l'erreur signalée est la CFBundleVersion, le correctif est généralement assez simple. Vérifiez / essayez ceci:

  1. Accédez à l'élément de projet de niveau supérieur dans le navigateur de projet et cliquez dessus.
  2. Dans le panneau juste à droite, cliquez sur la cible de l'application.
  3. Cliquez sur l'onglet de résumé.

Sur l'onglet de résumé, vous verrez qu'il existe deux «versions» différentes qui peuvent être ajustées. Le premier est le champ «Version», qui est utilisé dans l'écran par défaut «À propos» des applications Mac. Celui de droite est la "Version de construction". C'est celui qui compte vraiment pour les soumissions App Store!

David Hoelzer
la source
2

Je sais que c'est une vieille question, mais je viens de tomber sur ce problème. Je l'ai résolu en supprimant le projet de l'archive, puis en le réarchivant. Apparemment, la version précédente de l'application était là-dedans et semait la confusion.

Henry F
la source
2

Faites attention au message d'erreur.

Le message d'erreur contient le numéro de lot précédent entre crochets (par exemple [9]).

Ainsi, vous devez incrémenter ce numéro de bundle (par exemple 9.1), bien que votre nouveau numéro de version soit 1.2

Ainsi, lorsque vous mettez à jour la version 1.1 vers 1.2 dans iTunes Connect, vous devez définir ces valeurs dans votre projet

Version number = 1.2
Bundle number = [previous bundle number]++
Serge Seletskyy
la source
2
REMARQUE: si vous n'êtes pas sûr du numéro de bundle de la dernière version téléchargée, cliquez sur l'ancienne version et recherchez les détails binaires (sous Liens). Vous devriez voir "Bundle Version: #"
Nathaniel Blumer
1

J'ai un iPhone et une version iPad dans mon projet, la liste d'informations de l'ipad n'était pas associée au produit iPad pour une raison quelconque, Vérifier l'adhésion à Target et l'associer au bon produit a résolu ce problème pour moi.

Jay Adams
la source
1

J'ai fait une erreur en interchangeant le «Version» et le «Build» no.

Au lieu de mettre le 2.3 dans le champ Version, je le mets dans le Build no.

Pritesh Desai
la source
1

Voici comment j'ai résolu le problème (et je suppose que c'est le problème avec beaucoup de gens):

1) Cliquez sur l'onglet général des paramètres de vos projets (accessible en cliquant sur le nom de votre projet qui se trouve en haut de tous les fichiers de code).

2) Assurez-vous que le champ build correspond à ce que vous avez mis dans votre plist pour la clé "Bundle Version".

C'était le problème pour moi, quelle qu'en soit la raison, ils n'étaient pas synchronisés. Je pense que lorsque vous changez la clé de version de Bundler, il est censé se synchroniser (et vice versa). Mais cela n'est pas arrivé pour une raison quelconque - peut-être un bug.

Ser Pounce
la source
1

J'ai eu le même problème et c'est arrivé parce que je n'ai pas archivé et que j'utilisais la première archive que j'ai utilisée pour la 1.0 mais avec la 1.0.1. J'ai donc sélectionné l'appareil iOS, archivé puis validé. Ta-daaa, ça a marché!

Gonzo345
la source
devrait être un commentaire plutôt qu'une réponse.
Hello World
0

J'ai eu le même problème. Fondamentalement, ma version précédente était la 1.12, je voulais la changer en 1.2 mais j'avais l'erreur mentionnée. J'ai essayé 1,20 et cela a fonctionné parfaitement

mukaissi
la source
Le deuxième nombre doit être compris entre 0 et 9, donc 12 est "trop ​​grand"
JOM
1
Le "deuxième nombre" (laissez-moi l'appeler numéro de version mineure , juste pour le plaisir) peut être n'importe quel entier, il n'y a pas de limites pour cela; donc le numéro de version mineure12 ou 20est parfait .
holex
0

Aucun ensemble de numéros de version sans cesse croissants ne fonctionnait tant que j'utilisais "Application Loader" d'Apple pour télécharger mon fichier ipa, mais si j'utilisais "Organizer" de XCode (trouvé sous le menu déroulant "Window" dans la version 3.2.5) , cliqué sur le bouton "Valider ...", attendu qu'il m'approuve, puis cliquer sur le bouton "Soumettre ...", tout s'est déroulé comme prévu avec un numéro de version raisonnable (un seul incrément au-dessus de celui qui est actuellement disponible sur l'App Store).

idées
la source
0

dans xcode 4.2, il semble ne pas enregistrer la version du bundle si vous modifiez à partir du fichier info.plist. J'ai mis ma nouvelle version de bundle directement dans le panneau xcode "info" et maintenant ça marche!

Marco Allori
la source
0

J'ai trouvé une autre solution.

Si vous sélectionnez votre cible >> info >> mettre à jour l'ID du bundle.

Michael
la source
0

J'ai eu le même problème. La première version soumise était 1.5.20 et voulait mettre à jour vers 1.7.30.

Après avoir essayé sans succès les versions 1.8, 2.0 et 3.0, j'ai mis à jour ma CFBundleVersion vers 10.0 et soudainement cela a fonctionné.

Je ne sais pas quelle est la logique derrière ce comportement, mais cela m'a fait perdre environ 2 jours de travail.

BastiBen
la source
0

Vérifiez la version de votre bundle de la version précédemment téléchargée, vous devriez donner une version de bundle supérieure par rapport à la version de bundle de la version déjà téléchargée.La version déjà téléchargée peut être vue par itunesconnect / application / voir les détails / les détails binaires.

Vishnu R Kaimal
la source
0

J'ai passé deux nuits sur un problème similaire. Ma version précédente était 1.02, et j'ai essayé de valider avec 1.2, 1.20, 1.1 et j'ai toujours reçu le message binaire invalide.

Je l'ai résolu en entrant 2.0 comme numéro de version, et cela a fonctionné . Je soupçonne que c'est aussi un bug. Je n'ai pas reçu ce message lors de la mise à jour récente de mon jeu de 1.0 à 1.1, mais c'était avec xcode 3. Merci pour le conseil!

machineboy
la source
0

J'ai eu un problème similaire et après avoir passé une demi-heure, j'ai remarqué que j'augmentais un mauvais nombre. Au lieu d'augmenter , Bundle versionje croissait Bundleversions, string, shortdans Info.plist. Recherchez "CFBundleVersion" dans votre projet en utilisant CMD + Shift + F. Vous verrez que vous devez augmenter le numéro de CFBundleVersion.

Josip B.
la source
0

Essayez de changer la version = "1.1.1.0" en version = "1.1.1"

RouR
la source
0

A partir de fin Octobre Apple exige que les numéros de version comportent moins de 4 chiffres (1.2.3 ou 1.23 au lieu de 1.2.3.4 ou 1.234). Cela s'applique également aux bibliothèques!

Un grep rapide pour le numéro de version incriminée dans le répertoire de votre projet devrait activer la bibliothèque incriminée:

grep -r "1.2.3.4" .

Warpling
la source
0

J'avais une version bêta active de TestFlight en cours d'exécution. Build 2020 , version 407

J'ai soumis une application pour examen officiel de l' App Store. Build 2020 , version 435, et il a été approuvé. Il est juste assis là, attendant que je le pousse en direct dans l'App Store.

Sans ajouter une histoire parallèle compliquée, ce que je voulais faire est de donner à mes utilisateurs bêta TestFlight une version mise à jour pour prévisualiser la version officielle de l'App Store pendant quelques jours, avant de mettre en ligne la version de l'App Store. Pourquoi demandes-tu? Parce qu'ils bénéficiaient de fonctionnalités gratuites, ils étaient sur le point de coûter de l'argent une fois l'application mise en ligne.

Donc, j'ai soumis Build 2020 , version 436, à TestFlight, et il a été rejeté.

Il a été rejeté car j'ai un candidat officiel approuvé dans l'App-Store avec le même numéro de version

Solution: modifiez le numéro de build de votre version TestFlight. J'ai soumis la version 436 de Build 20200 (j'ai ajouté un zéro supplémentaire) à TestFlight, et elle a été approuvée. Ne vous inquiétez pas, vous pouvez toujours pousser cette version vers le même groupe bêta TestFlight, tant que vous utilisez toujours le même BundleID.

jungledev
la source