Les champs de version / build pour une application iOS incluent:
"Version" 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.
"Build" 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.
«Numéro de version d'iTunes Connect» : numéro de version que vous spécifiez lors de la création d'une nouvelle version de l'application sur iTunes Connect.
Ma question est:
Quels numéros de version / build doivent être incrémentés lorsqu'une nouvelle version de l'application est téléchargée sur iTunes Connect et / ou publiée sur l'App Store?
La "version" CFBundleShortVersionString
ou la "construction" peuvent-elles CFBundleVersion
rester les mêmes entre les mises à jour de l'application?
Points supplémentaires pour les sources Apple ou les messages d'erreur exacts qu'iTunesConnect affiche lors du téléchargement d'une version / numéro de build invalide.
Remarque Android / Google Play:
La discussion suscitant cette question est que la "version" publique d'une application Android dans le Google Play Store n'a pas besoin d'être incrémentée et n'est en aucun cas validée. Le android:versionName
peut rester le même entre les versions, la mise à niveau, la rétrogradation ou être une chaîne aléatoire plutôt que quelque chose qui semble être un "numéro de version" valide.
android:versionName
- Une valeur de chaîne qui représente la version finale du code d'application, telle qu'elle doit être présentée aux utilisateurs.La valeur est une chaîne afin que vous puissiez décrire la version de l'application sous la forme d'une
<major>.<minor>.<point>
chaîne ou de tout autre type d'identificateur de version absolu ou relatif.
Différence entre versionName et versionNumber sous Android
Alors que le android:versionCode
est forcé d'être un entier incrémenté à la libération.
Documentation Apple
Comme indiqué dans la nouvelle réponse acceptée , Apple a récemment publié une note technique qui détaille leur version et le schéma de numéro de build:
Note technique Apple TN2420 - Numéros de version et numéros de build
Réponses:
Note technique Apple TN2420, numéros de version et numéros de build
Résumé:
Version
,Build number
) doit être unique.Version
( CFBundleShortVersionString ) doit être dans l'ordre séquentiel ascendant.Build number
( CFBundleVersion ) doit être dans l'ordre séquentiel croissant.Sur la base de la liste de contrôle, la
(Version, Build Number)
séquence suivante est également valide.Cas: réutilisation
Build Number
dans différents trains de versions. (REMARQUE: PAS d' application macOS)(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)
la source
(major, minor, patch)
manière. Et j'avais déjà utilisé 4 composants, mais l'App Store n'accepte pas ce format avec 4 composants.Le
CFBundleShortVersionString
doit correspondre au numéro de version que vous donnez à iTunes Connect. C'est également le numéro de version qui apparaît lorsque l'utilisateur regarde votre application dans l'App Store.Le
CFBundleVersion
n'est pas affiché dans l'App Store, mais est utilisé par iTunes pour déterminer quand votre application a été mise à jour.Répondre plus spécifiquement à vos questions ...
Tous les deux. L'un est affiché dans l'App Store, l'autre est utilisé par iTunes pour mettre à jour l'application.
Non (question méta, 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 en savoir plus). Si vous essayez, vous verrez des messages d'erreur comme ci-dessous:
Oui. Utilisation du standard semver.org .
Non.
la source
CFBundleShortVersionString
. Est-ce possible? Je souhaite rejeter ma propre application.CFBundleShortVersionString est le "nom" public de la version (exemple: "2.5" ou "3.8.1"). Vous devez l'augmenter à chaque version .
CFBundleVersion est le numéro de build privé . Il n'est pas visible sur l'AppStore. Vous devez l'augmenter à chaque téléchargement . Cela signifie que si jamais vous rejetez un binaire avant qu'il ne soit mis en ligne, et que vous souhaitez télécharger un nouveau binaire, il aura le même CFBundleShortVersionString mais doit avoir une CFBundleVersion plus élevée (exemple: public "2.5", privé "2.5", puis rejet binaire et re-téléversement privé "2.5.1")
Edit le 16 novembre 2016:
/ ! \ La propriété CFBundleVersion est également utilisée (avec CFBundleName ) dans l'en-
User-Agent
tête envoyé par NSURLConnection dans votre code.Exemple: si CFBundleName est MyApp et CFBundleVersion est 2.21, alors toute requête HTTP programmatique envoyée directement par votre code à l'aide de NSURLConnection incorporera l'en-tête:
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(Cela ne s'applique pas aux demandes émises automatiquement par UIWebView).
la source
X.X-rc2
àX.X.2
, pour le système CI pour générer lebuildNumber
pour le téléchargement à iTunesConnect.CFBundleVersion et CFBundleShortVersionString doivent être supérieurs au dernier numéro de version de l'application. C'est une bonne pratique de les garder identiques. 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'un d'eux n'a pas été incrémenté. Cela m'est arrivé hier soir.
la source
Les deux
CFBundleVersion
etCFBundleShortVersionString
DOIT être incrémentés lors de la publication d'une nouvelle version sur l'App Store.De plus, l'une des chaînes doit correspondre à la version spécifiée dans iTunes Connect.
Cette question comprend la capture d'écran ci-dessus du validateur de l'organisateur Xcode refusant de valider l'application lorsque
CFBundleVersion
etCFBundleShortVersionString
n'ont pas été incrémentés.Ce bundle 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 bundle 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 que l'une des chaînes doit correspondre à la version de l'application créée sur iTunes Connect.
la source
La note technique actuelle d' Apple TN2420, les numéros de version et les numéros de construction dit (en gras):
Malheureusement, cela signifie que vous ne pouvez pas réutiliser un numéro de version qui suit le numéro de train de version sur iOS lorsque vous essayez de publier la même version sur Mac Catalyst.
Dans mon cas, par exemple, en raison de problèmes antérieurs, j'ai fini par publier 1.0.2 (4) en tant qu'application Mac Catalyst qui correspondait à 1.0.2 (1) sur iOS. Désormais, lorsque vous essayez de publier 1.0.3 (1) sur les deux, l'application échoue à la vérification sur MacOS en raison du numéro de version, alors qu'elle réussit la vérification sur iOS.
Je suppose que maintenant que je publie la même application sur iOS et MacOS régulièrement, j'adopterai des numéros de build qui correspondent à la date, comme 20200111 et incrémenter avec un point décimal si je dois changer le numéro de build dans une version donnée.
la source
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 supérieure aux versions précédentes. Cette version sur iTunes Connect attendra un binaire avec le même numéro de version, il
CFBundleShortVersionString
doit donc ê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
etCFBundleVersion
, veuillez consulter: https://stackoverflow.com/a/31921249/936957la source
Je peux confirmer, après l'avoir essayé dans les deux sens, qu'une séquence de numéros de version et de build comme ...
... sera accepté pour les applications iOS, mais pour les applications Mac (Catalyst), il renvoie cette erreur:
La version Mac et les numéros de build devraient ressembler à ...
Pour iOS, j'avais l'habitude de saisir les numéros de version comme numéro de version plus un quatrième chiffre, comme ...
... mais ce n'est pas non plus autorisé pour les applications Mac. Lorsque j'ai essayé de soumettre ma première application Mac (Catalyst), Apple n'acceptait qu'un numéro de build avec trois chiffres ou moins:
Je suis donc passé à un numéro unique qui s'incrémente pour chaque build et continue d'augmenter à travers les numéros de version.
la source
Je me prépare à publier une nouvelle application Mac App Store. Utilisation du formatage CalVer de
YEAR.release (build)
.Je plusieurs builds téléchargé:
2020.0 (1)
,2020.0 (2)
, etc. J'ai finalement soumis2020.0 (8)
pour examen App Store. Cela a passé l'examen et est dans l'état En attente de publication du développeur .Je voulais corriger quelques problèmes avant la publication, j'ai donc ajouté une nouvelle version au même train de versions:
2020.0 (9)
.Cela entraîne l'erreur:
ce qui est ennuyeux car ma
2020.0
version n'a jamais été publiée . D'après la réponse acceptée à cette question, j'avais l'impression que jusqu'à ce que l'application soit disponible sur l'App Store, vous pouviez continuer à publier de nouvelles versions avec la même version.La solution semble être qu'un «train de versions» (même version + nouvelle version) ne peut pas être mis à jour si l'état de l'application est en attente de publication du développeur . Soit publiez votre version existante, puis augmentez la version, soit annulez cette version dans App Store Connect pour autoriser d'autres téléchargements pour ce train de versions.
la source
AFAIK, du haut de ma tête, il vous suffit d'incrémenter le numéro de build
CFBundleVersion
. L'incrémentation de la chaîne de version courte n'est pas nécessairement nécessaire, bien que vous devriez probablement l'incrémenter, car cela indique à l'utilisateur que l'application est nouvelle. Cependant, Apple dit que la numérotation doit suivre les conventions de version logicielles traditionnelles et iTunes Connect peut se plaindre si vous essayez de télécharger à nouveau une version déjà existante.Pour faire court, cela peut fonctionner, mais probablement pas.
la source
CFBundleShortVersionString
n'est pas nécessaire d'incrémenter, la «même» version destinée à l'utilisateur peut alors être téléchargée plusieurs fois sur l'App Store?