Quelle est la différence entre «numéro de version» dans iTunes Connect, «version du bundle», «chaîne de version du bundle» dans Xcode?

94

La documentation d'Apple aurait pu être plus claire sur la façon de soumettre une version de mise à jour.

Comme demandé dans le titre, quelle est la différence entre

  1. numéro de version dans iTunes Connect (que vous devez fournir lorsque vous soumettez une mise à jour)
  2. version du bundle dans xcode
  3. bundle versions chaîne, courte

Sont-ils liés d'une manière ou d'une autre?

Eugène
la source
12
Apple et leurs termes / champs déroutants ...: /
BoltClock
Veuillez voir ma réponse précédente: stackoverflow.com/a/31921249/936957
Yunus Nedim Mehel

Réponses:

143

Oui, ils sont liés. Ils font tous référence à la version de votre application.

  • iTunes Connect
    Il s'agit du numéro de version affiché dans l'App Store; Il doit s'agir d'un numéro de version pur comme1.2.3

  • Version du bundle (CFBundleVersion)
    Cela n'a pas besoin d'être un numéro de version pur. Cela peut être quelque chose comme 12345ou 1.2.3 (Build 12345AB). Ceci est affiché dans la fenêtre À propos des applications Mac OS X par exemple et est souvent plus un «numéro de version» qu'un «numéro de version».

  • Chaîne de version du bundle (CFBundleShortVersionString) Cette valeur est utilisée comme numéro de version "réel". Il doit s'agir de la même chaîne que celle utilisée pour la version d' iTunes Connect .

Mise à jour:
comme l'a souligné @snlehton, CFBundleVersion doit être un numéro de version pur, comme 1.2.3lorsque vous souhaitez télécharger votre application sur l'App Store (iOS).

Fabian Kreiser
la source
3
Pour le test, vous définissez la chaîne de version du bundle sur le numéro de version finale comme 1.2.3, puis incrémentez la version du bundle pour chaque build.
Fabian Kreiser le
19
CECI EST MAUVAIS CFBundleVersion doit être pour xyz, sinon le téléchargement d'une compilation échouera! lien
snlehton
2
J'ai récemment soumis une version avec CFBundleVersion avec "1.0.2 RC3" et elle a rebondi avec le message d'erreur: "Le bundle n'est pas valide. La clé CFBundleVersion dans le fichier Info.plist doit être une liste d'entiers non négatifs séparés par un point." Je pense que nn.n.nxnnn est le bon format à utiliser, mais je ne l'ai pas encore essayé.
snlehton
3
CFBundleVersion de 1235 ici, pas de problèmes
Piotr Tomasik
4
La confusion ici est due au fait que CFBundleShortVersionString est facultatif et, lorsqu'il est défini, il modifie l'utilisation de CFBundleVersion. Si seulement CFBundleVersion est inclus, il doit s'agir du numéro de version publique, par exemple 1.0. Cependant, si CFBundleVersion et CFBundleShortVersionString sont définis, alors CFBundleShortVersionString doit maintenant indiquer le numéro de version publique, par exemple 1.0. Et maintenant, CFBundleVersion change pour être le numéro de build, qui est normalement un seul entier par exemple 374629. Espérons que cela clarifie la situation.
malhal
27

Oui, ils sont liés mais leur définition dépend de la manière dont ils sont utilisés.

  • Version d'iTunes Connect

    Il doit toujours s'agir d'un numéro de version, par exemple 1.0

Mode d'utilisation 1 - Seul CFBundleVersion est défini

  • Version du bundle (CFBundleVersion)

    Doit être un numéro de version, par exemple 1.0. Doit correspondre à la version iTunes Connect.

Mode d'utilisation 2 - CFBundleVersion et CFBundleShortVersionString sont définis

  • Version du bundle (CFBundleVersion)

    Doit être un numéro de build, par exemple un seul entier comme 435163.

  • Chaîne de version courte du bundle (CFBundleShortVersionString)

    Doit être un numéro de version, par exemple 1.0. Doit correspondre à la version iTunes Connect.

Le mode d'utilisation 2 est la meilleure solution. Voici quelques exemples de numéros pour le chemin de mise à niveau d'une application:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

Une note supplémentaire sur les numéros de version: si vous soumettez une mise à jour mineure (par exemple, correction de bogue) à votre application, vous ne devez jamais manquer de périodes dans le numéro de version, par exemple, utilisez toujours 1.0.1 et JAMAIS 1.01 ou vous risquez de ne pas pouvoir utiliser certains numéros de version dans le futur car il ne sera pas possible de les incrémenter.

malhal
la source
2
Ce tableau à lui seul explique le mieux comment ces deux nombres sont liés et utilisés dans la pratique. Merci.
Joshua Pinter
Doit correspondre à la version iTunes Connect. Ce n'est pas une exigence difficile (même si cela devrait être un MUST)
Marco Pappalardo
13

Oui, ils sont tous liés.

Le numéro de version dans itunesconnect est le numéro de version que vous devez fournir. Par exemple, 2.1.1 ou 3.1.2, etc. Cela devrait également être égal à CFBundleShortVersionString .

La version du bundle dans Xcode ( CFBundleVersion ) représente uniquement le numéro de build qui identifie une itération (publiée ou non) de l'application.

Chaîne de versions de bundle , courte ( CFBundleShortVersionString ) est un nombre composé de trois entiers séparés par des points. Le premier représente toutes les mises à jour majeures de l'application, telles que les mises à jour qui implémentent de nouvelles fonctionnalités ou des changements majeurs. Le deuxième entier désigne les révisions qui implémentent des fonctionnalités moins importantes. Le troisième entier représente les versions de maintenance.

Mayuur
la source
3
En fait, "Chaîne de versions de bundle, courte" n'a pas besoin d'être TROIS nombres séparés par des points. Je pense que "1" et "1.1" sont également valides.
Nicolas Miari
en fait, le numéro de version de mon test dans itunesconnect est complètement indépendant de CFBundleVersion et ShortVersion. Vous pouvez même les avoir différents
Marco Pappalardo
11

Faites attention à CFBundleVersion . Ce n'est pas seulement un numéro de version de production. Cette valeur est vérifiée par Apple pendant le processus de téléchargement binaire et peut échouer.

Assurez-vous de définir CFBundleVersion avec la valeur CFBundleShortVersionString lorsque vous créez votre version pour la soumission.

Voir cet article à ce sujet

aponaute
la source
3
Ce sont des informations correctes, la réponse acceptée est erronée.
snlehton
9
Ce n'est pas correct, CFBundleVersionne doit pas correspondre CFBundleShortVersionString. Par exemple, si vous regardez le fichier .ipa actuel pour Chrome (dans l'App Store maintenant), ils ont "34.0.1847.18" pour CFBundleVersionet "34.1847.18" pour CFBundleShortVersionString.
programme
6
Il n'y a pas de documentation indiquant que CFBundleVersion et CFBundleShortVersionString devraient être identiques.
Toydor
8

La réponse acceptée est la voie à suivre - en ajoutant simplement ceci à titre d'exemple.

Pour notre dernière version, le "Bundle Version String, short" était requis, et je l'ai mis en correspondance avec le numéro de version du Bundle (1.2.8 pour notre application).

J'ai ensuite activé Testflight et mis la version en attente d'examen Apple (1.2.8) à la disposition de nos testeurs internes. Un testeur a cependant trouvé un problème qui nécessitait une correction, et nous avons supprimé le binaire en place. Lors du téléchargement d'une nouvelle version, nous avons obtenu une erreur indiquant que la version de la version était déjà téléchargée.

Après avoir lu quelques liens SO et des documents Apple, j'ai compris que je devais créer la version du bundle: 1.2.8.001, tout en maintenant le bundle-version-short tel qu'il était. Si une nouvelle version est requise, nous incrémentons la version du bundle à 1.2.8.002.

Remarque: le téléchargement a été accepté et la compilation apparaît sous la forme "1.2.8.001" sous la pré-version. Le numéro de version reste 1.2.8.

ahash
la source
3

La réponse acceptée de ce lien contient de bons détails: Quelle version / numéro de version de l'application iOS DOIT être incrémentée lors de la sortie de l'App Store?

À partir de la documentation Apple

CFBundleVersion (version Bundle)

CFBundleVersion (String - iOS, OS X) spécifie le numéro de version de build du bundle, qui identifie une itération (publiée ou non) du bundle. Le numéro de version de build doit être une chaîne composée de trois entiers non négatifs séparés par des points, le premier entier étant supérieur à zéro. La chaîne ne doit contenir que des caractères numériques (0-9) et point (.). Les zéros non significatifs sont tronqués à partir de chaque entier et seront ignorés (c'est-à-dire que 1.02.3 équivaut à 1.2.3). Cette clé n'est pas localisable.

CFBundleShortVersionString (chaîne de versions de , courte)

CFBundleShortVersionString (String - iOS, OS X) spécifie le numéro de version de l'édition du bundle, qui identifie une itération publiée de l'application. Le numéro de version de la version est une chaîne composée de trois entiers séparés par des points. Le premier entier représente les révisions majeures de l'application, telles que les révisions qui implémentent de nouvelles fonctionnalités ou des changements majeurs. Le deuxième entier désigne les révisions qui implémentent des fonctionnalités moins importantes. Le troisième entier représente les versions de maintenance.

La valeur de cette clé diffère de la valeur de CFBundleVersion, qui identifie une itération (publiée ou non) de l'application. Cette clé peut être localisée en l'incluant dans vos fichiers InfoPlist.strings.

museler
la source