Quel(s) Numéro (s) de version/construction de l'application iOS doit (doivent) être incrémenté (s) lors de la sortie de L'App Store?
les champs de Version/construction pour une application iOS incluent:
-
"la Version " CFBundleShortVersionString (String - iOS, OS X) spécifie le numéro de version de la publication du faisceau, qui identifie une itération publiée de l'application. Le numéro de version est une chaîne composée de trois entiers séparés par une période.
-
À "Construire" Le CFBundleVersion (Chaîne De - iOS, OS X) spécifie le numéro de version du paquet, qui identifie une itération (publiée ou non) du paquet. Le numéro de version de compilation doit être une chaîne composée de trois entiers non négatifs, séparés par une période, dont le premier entier est supérieur à zéro. La chaîne de caractères ne doit contenir que les caractères numériques (0-9) et la période (.) caractère. Les zéros de tête sont tronqués 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.
-
"iTunes Connect Version Number " : 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 / construction sont requis pour être incrémenté quand une nouvelle version de l'application est téléchargée sur iTunes Connect et/ou libérée sur L'App Store?
est-ce que" version " CFBundleShortVersionString
ou" build " CFBundleVersion
peuvent rester les mêmes entre les mises à jour app?
points supplémentaires pour les sources Apple ou les messages d'erreur exacts iTunesConnect s'affiche lors du téléchargement d'un numéro de version/build invalide.
Android / Google Play note:
la discussion suscitant cette question Est que la "version" publique d'une application Android dans le Google Play Store ne pas doivent être incrémenté et est en no way validé. Le android:versionName
peut rester le même entre les versions, la mise à niveau, la déclassement, ou être n'importe quelle 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 de caractères qui représente la version de publication du code d'application, comme il doit être montré aux utilisateurs.la valeur est une chaîne ainsi, vous pouvez décrire la version de l'application comme une chaîne de caractères
<major>.<minor>.<point>
, ou comme tout autre type d'Identificateur de version absolu ou relatif.
différence entre versionName et versionNumber dans Android
alors que le android:versionCode
est forcé d'être un entier incrementing-on-release.
dans la documentation d'Apple
comme indiqué dans la réponse nouvellement acceptée , Apple a récemment publié une Note technique qui détaille leur version et construire le schéma de nombre:
Apple Note Technique TN2420 les Numéros de Version et le numéro de Build
7 réponses
Apple Note Technique TN2420, les Numéros de Version et le numéro de Build
résumé:
- 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
( Cfbundleshortversionstrating ) doit être en ordre croissant séquentiel. -
Build number
( CFBundleVersion ) doit être en ordre croissant.
liste de vérification du numéro de Version et du numéro de construction
voici quelques choses que vous pouvez vérifier lors de la soumission d'une nouvelle construction à L'App Store. S'assurer que vous avez votre numéro de Version et le numéro de compilation correctement défini vous aidera en évitant le rejet automatique de votre application parce qu'elle est mal configurée.
- pour chaque nouvelle version de votre application, vous devez inventer un nouveau numéro de Version. Ce nombre devrait être une valeur plus grande que le dernier numéro de Version que vous avez utilisé. Si vous pouvez fournir beaucoup d'construit pour une version de votre Application, il vous suffit d'utiliser un nouveau Numéro de Version pour chaque nouvelle version de votre Application.
- vous ne pouvez pas réutiliser les numéros de Version.
- pour chaque nouvelle compilation que vous soumettez, vous devrez inventer un nouveau numéro de compilation dont la valeur est supérieure au dernier numéro de compilation que vous avez utilisé (pour cette même version).
- vous pouvez réutiliser les numéros de Build dans différents trains de libération, mais vous ne pouvez pas réutiliser les numéros de Build dans le même train de libération.
selon la liste de vérifications, la séquence suivante (Version, Build Number)
est valable aussi.
-
cas: réutilisation
Build Number
dans différents trains de libération.(1.0.0, 1) -> (1.0.0, 2) -> ... - >(1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)
le CFBundleShortVersionString
doit correspondre au numéro de version que vous donnez à iTunes Connect. C'est aussi le numéro de version qui apparaît lorsque l'utilisateur regarde votre application dans L'App Store.
le numéro de version est affiché dans le magasin et cette version doit correspondre au numéro de version que vous entrez plus tard dans iTunes Connect.
le CFBundleVersion
n'est pas affiché App Store, mais est utilisé par les iTunes pour déterminer quand votre application a été mise à jour.
si vous mettez à jour la chaîne de compilation, comme décrit dans" définir le numéro de Version et la chaîne de compilation", iTunes reconnaît que la chaîne de compilation a changé et synchronise correctement le nouveau paquet iOS App Store pour tester les périphériques.
répondant plus spécifiquement à vos questions...
de la version/build numéros doivent être incrémenté lorsqu'une nouvelle version de l'application est téléchargée sur l'app store?
les deux. L'un est affiché dans l'App Store, l'autre est utilisé par iTunes pour mettre à jour l'Application.
est-ce que CFBundleShortVersionString ou CFBundleVersion peuvent rester les mêmes entre les mises à jour app?
Pas de. (Méta question, ce qui serait le cas d'utilisation le droit d'être ici? Si vous avez modifié la charge utile d'une quelconque manière, la construction sera différent et que l'utilisateur veut savoir à ce sujet). Si vous essayez, vous verrez des messages d'erreur comme ci-dessous:
ou sont-ils comparés aux numéros respectifs précédents pour s'assurer qu'un nombre numériquement plus grand est téléchargé avec la nouvelle version de l'application?
Oui. À l'aide de la semver.org standard.
est-ce que les nombres Cfbundleshorsioning et CFBundleVersion sont comparés les uns aux autres?
Pas de.
CFBundleShortVersionString est le" nom "public de la version (exemple:" 2.5", ou"3.8.1"). Vous devez l'augmenter à chaque libération .
CFBundleVersion est le numéro privé build . Il n'est pas visible sur l'AppStore. Vous devez l'augmenter à chaque télécharger . Il signifie que si vous rejetez un binaire avant qu'il ne soit en ligne, et que vous voulez télécharger un nouveau binaire, il aura le même CFBundleShortVersionString mais devra avoir un supérieur CFBundleVersion (exemple: public "2.5", privé "2.5", puis rejet binaire, et re-upload privé "2.5.1")
Edit le 16 novembre 2016:
/ ! \ The La propriété de CFBundleVersion est également utilisée (avec CFBundleName ) dans l'en-tête User-Agent
envoyé par Nslcconnection dans votre code.
exemple: si CFBundleName est MyApp et CFBundleVersion est 2.21, alors toute requête HTTP programmée envoyée directement par votre code en utilisant Nslconnection intégrera l'en-tête:
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(ceci ne s'applique pas aux requêtes émises automatiquement par UIWebView).
CFBundleVersion et CFBundleShortVersionString doivent être supérieures au numéro de la dernière version de l'application. C'est une bonne pratique pour les garder même. Vous les trouverez dans votre -info.plist.
Lorsque vous essayez de valider l'application de l'organisateur, il renvoie une erreur si l'un d'eux n'a pas été incrémenté. M'est arrivé la nuit dernière.
les deux CFBundleVersion
et CFBundleShortVersionString
doit être incrémenté lors de la sortie d'une nouvelle version à 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 ci-dessus de l'Xcode Organisateur Validateur du refus de valider l'application lorsque l' CFBundleVersion
et CFBundleShortVersionString
n'ont pas été incrémenté.
-
ce paquet n'est pas valable. La valeur pour la touche
CFBundleVersion
[1.0] dans L'Info.le fichier 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 valable. La valeur pour la touche
CFBundleShortVersionString
[1.0] dans L'Info.le fichier plist doit contenir une version supérieure à celle de la version précédemment téléchargée. [1.134].
le validateur envoie également une erreur prouvant que l'une des chaînes doit correspondre à la version de l'application créée sur iTunes Connect.
- Incompatibilité De Version. Ni CFBundleVersion ['1.0'] ni Cfbundleshortversioning ['1.0'] dans L'Info.plist match la version de l'application définie dans iTunes Connect ['1.4'].
vous devez augmenter 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 d'iTunes Connect attendent un binaire avec le même numéro de version, donc CFBundleShortVersionString
doit être incrémentée.
si vous mettez à jour la version mais oubliez d'incrémenter le CFBundleVersion
, vous rencontre une erreur lors du téléchargement. Voir la réponse de pkamb et la capture d'écran.
pour plus de détails sur CFBundleShortVersionString
et CFBundleVersion
, veuillez consulter: https://stackoverflow.com/a/31921249/936957
AFAIK, du haut de ma tête, vous n'avez qu'à incrémenter le numéro de construction CFBundleVersion
. Incrémenter la chaîne de version courte n'est pas nécessairement nécessaire, bien que vous devriez probablement l'incrémenter, car il dit à l'utilisateur que l'application est nouvelle. Apple ne dit que la numérotation devrait suivre les conventions de versioning logicielles traditionnelles, cependant, et iTunes Connect peut se plaindre si vous essayez de re-uploader une version déjà existante.
pour faire court, ça peut marcher, mais probablement pas.