web-dev-qa-db-fra.com

Quel numéro de version / version de l'application iOS DOIT être incrémenté à la sortie de l'App Store?

Les champs de version/construction pour une application iOS incluent:

  • "Version" CFBundleShortVersionString (String - iOS, OS X) spécifie le numéro de version de la version du paquet, 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.

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

  • "Numéro de version d'iTunes Connect" : numéro de version que vous indiquez lors de la création d'une nouvelle version de l'application sur iTunes Connect.

Ma question est:

Quels sont les numéros de version/construction à incrémenter lorsqu'une nouvelle version de l'application est téléchargée vers iTunes Connect et/ou vers l'App Store?

Est-ce que "version" CFBundleShortVersionString ou "build" CFBundleVersion restent les mêmes entre les mises à jour de l'application?

Points supplémentaires pour les sources Apple ou les messages d'erreur exacts affichés par iTunesConnect lors du téléchargement d'un numéro de version/version non valide.


Note Android/Google Play:

La discussion suscitant cette question est que la "version" publique d'une Android dans le Google Play Store ne fait pas doit être incrémenté et se trouve dans pas du tout validé. Le Android:versionName peut rester le même entre les éditions, la mise à niveau, le rétrogradation ou toute chaîne aléatoire plutôt que quelque chose qui semble être un "numéro de version" valide.

Android:versionName - Valeur de chaîne représentant la version du code de l'application, telle qu'elle devrait être montrée aux utilisateurs.

La valeur est une chaîne afin que vous puissiez décrire la version de l'application en tant que <major>.<minor>.<point> chaîne, ou comme tout autre type d'identificateur de version absolu ou relatif.

Différence entre versionName et versionNumber sous Android

Tandis que le Android:versionCode est forcé d'être un entier incrémentant à la libération.


Documentation Apple

Comme indiqué dans le la réponse récemment acceptée , Apple a récemment publié une note technique détaillant sa version et son schéma de numéros de version:

Note technique TN2420 de Apple - Numéros de version et de version

88
pkamb

Note technique TN2420 de Apple, Numéros de version et numéros de version

Sommaire:

  • La paire (Version, Build number) doit être unique.
    • La séquence est valide: (1.0.1, 12) -> (1.0.1, 13) -> (1.0.2, 13) -> (1.0.2, 14) ...
  • Version ( CFBundleShortVersionString ) doit être en ordre séquentiel croissant.
  • Build number _ ( CFBundleVersion ) doit être en ordre séquentiel croissant.

Numéro de version et liste de contrôle

Voici quelques éléments à vérifier lors de la soumission d'une nouvelle version sur l'App Store. En vous assurant que votre numéro de version et votre numéro de version sont correctement définis, cela vous aidera en évitant que votre application soit automatiquement rejetée pour une configuration incorrecte.

  1. Pour chaque nouvelle version de votre application, vous devez inventer un nouveau numéro de version. Ce nombre doit être supérieur au dernier numéro de version que vous avez utilisé. Bien que vous puissiez fournir de nombreuses versions pour chaque version de votre application, il vous suffit d'utiliser un nouveau numéro de version pour chaque nouvelle version de votre application.
  2. Vous ne pouvez pas réutiliser les numéros de version.
  3. Pour chaque nouvelle construction que vous soumettez, vous devrez inventer un nouveau numéro de version dont la valeur est supérieure au dernier numéro de version que vous avez utilisé (pour cette même version).
  4. Vous pouvez réutiliser des numéros de build dans différents trains de version, mais vous ne pouvez pas réutiliser des numéros de construction dans le même train de version.

Sur la base de la liste de contrôle, les (Version, Build Number) La séquence est également valide.

  • Cas: réutiliser Build Number dans différents trains de release.

    (1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)

85
AechoLiu

Le CFBundleShortVersionString doit correspondre au numéro de version que vous avez attribué à iTunes Connect. C'est également le numéro de version qui apparaît lorsque l'utilisateur consulte votre application dans l'App Store.

Le numéro de version est indiqué dans le magasin et cette version doit correspondre au numéro de version que vous entrez ultérieurement dans iTunes Connect.

Source

CFBundleVersion ne s'affiche pas dans l'App Store, mais iTunes l'utilise pour déterminer la date de mise à jour de votre application.

Si vous mettez à jour la chaîne de construction, comme décrit dans la section "Définition du numéro de version et de la chaîne de construction", iTunes reconnaît que la chaîne de construction a été modifiée et synchronise correctement le nouveau package iOS App Store pour tester les périphériques.

Source

Répondre à vos questions plus précisément ...

Quels numéros de version/version doivent être incrémentés lorsqu'une nouvelle version de l'application est téléchargée sur l'App Store?

Tous les deux. L'un est affiché dans l'App Store, l'autre est utilisé par iTunes pour mettre à jour l'application.

CFBundleShortVersionString ou CFBundleVersion peuvent-ils rester identiques entre les mises à jour d'applications?

Non (Meta question, quel serait le cas d'utilisation ici? Si vous avez modifié la charge utile de quelque manière que ce soit, la construction sera différente et l'utilisateur voudra le savoir). Si vous essayez, vous verrez des messages d'erreur comme ci-dessous:

Error messages

Ou sont-ils comparés au numéro respectif précédent pour s'assurer qu'un nombre plus grand est transféré avec la nouvelle version de l'application?

Oui. Utiliser le standard semver.org .

Les nombres CFBundleShortVersionString et CFBundleVersion sont-ils comparés l'un à l'autre?

Non.

37
Andy

CFBundleShortVersionString est le "nom" public de la version (exemple: "2.5" ou "3.8.1"). Vous devez l'augmenter à chaque release.

CFBundleVersion est le numéro privé build. On ne le voit pas sur l'AppStore. Vous devez l'augmenter à chaque upload. Cela signifie que si vous rejetez un fichier binaire avant sa mise en ligne et que vous souhaitez télécharger un nouveau fichier binaire, celui-ci aura le même CFBundleShortVersionString mais doit avoir un niveau supérieur CFBundleVersion (exemple: public "2.5", privé "2.5", puis rejet binaire et re-téléversement privé "2.5.1")

Éditer le 16 novembre 2016:

/ ! \La propriété CFBundleVersion est également utilisée (avec CFBundleName ) dans le User-Agent en-tête envoyé par NSURLConnection dans votre code.

Exemple: si CFBundleName est MyApp et CFBundleVersion vaut 2,21, alors toute requête HTTP programmatique envoyée directement par votre code en utilisant NSURLConnection intégrera l'en-tête:

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(Cela ne s'applique pas aux demandes émises automatiquement par UIWebView).

29
Gabriel

CFBundleVersion et CFBundleShortVersionString [~ # ~] doit [~ # ~] être incrémenté lors de la publication d'une nouvelle version sur l'App Store.

En outre, l'une des chaînes doit correspondre à la version spécifiée dans iTunes Connect.

Xcode Organizer Validator error: must increment the version number.

Cette question inclut la capture d'écran ci-dessus du validateur de l'organisateur Xcode refusant de valider l'application lorsque CFBundleVersion et CFBundleShortVersionString n'ont pas été incrémentés.

  • Ce paquet n'est pas valide. La valeur de la clé CFBundleVersion [1.0] dans le fichier Info.plist doit contenir une version supérieure à celle de la version précédemment téléchargée [1.134].

  • Ce paquet n'est pas valide. La valeur de la clé CFBundleShortVersionString [1.0] dans le fichier Info.plist doit contenir une version supérieure à celle de la version précédemment téléchargée [1.134].

Le validateur renvoie également une erreur prouvant qu'une des chaînes doit correspondre à la version de l'application créée sur iTunes Connect.

  • Incompatibilite de version. Ni CFBundleVersion ['1.0'] ni CFBundleShortVersionString ['1.0'] dans Info.plist ne correspondent à la version de l'application définie dans iTunes Connect ['1.4'].
5
pkamb

CFBundleVersion et CFBundleShortVersionString doivent être supérieurs au dernier numéro de version de l'application. C'est une bonne pratique de les garder. Vous devriez les trouver dans votre -info.plist.

Lorsque vous essayez de valider l'application dans l'organiseur, une erreur est générée si l'une ou l'autre n'a pas été incrémentée. M'est arrivé la nuit dernière.

5
xoail

Vous devez incrémenter les deux .

Lors du téléchargement d'une nouvelle version, vous devrez créer une nouvelle version sur iTunes Connect, qui sera automatiquement plus élevée que les versions précédentes. Cette version sur iTunes Connect attendra un binaire avec le même numéro de version, donc CFBundleShortVersionString doit être incrémenté.

Si vous mettez à jour la version mais oubliez d’incrémenter le CFBundleVersion, vous rencontrerez une erreur lors du téléchargement. Voir la réponse et la capture d'écran de pkamb.

Pour plus de détails sur CFBundleShortVersionString et CFBundleVersion, veuillez consulter: https://stackoverflow.com/a/31921249/936957

1
Yunus Nedim Mehel