Apple a en quelque sorte réorganisé / réorienté les champs.
À l'avenir, si vous regardez sur l'onglet Info pour votre cible d'application, vous devez utiliser la "chaîne de versions Bundle, courte" comme version (par exemple, 3.4.0) et "version Bundle" comme version (par exemple, 500 ou 1A500 ). Si vous ne les voyez pas tous les deux, vous pouvez les ajouter. Celles-ci seront mappées aux zones de texte Version et Build appropriées dans l'onglet Résumé; ce sont les mêmes valeurs.
Lorsque vous affichez l'onglet Info, si vous cliquez avec le bouton droit et sélectionnez Afficher les clés / valeurs brutes , vous verrez que les noms réels sont CFBundleShortVersionString
(Version) et CFBundleVersion
(Build).
La version est généralement utilisée de la manière dont vous semblez l'avoir utilisée avec Xcode 3. Je ne sais pas à quel niveau vous demandez la différence Version / Build, donc je vais y répondre philosophiquement.
Il existe toutes sortes de schémas, mais le plus populaire est le suivant:
{MajorVersion}. {MinorVersion}. {Révision}
- Version majeure - Changements majeurs, remaniements et changements de fonctionnalités
- Version mineure - Améliorations mineures, ajouts aux fonctionnalités
- Révision - Un numéro de patch pour les corrections de bugs
La version est ensuite utilisée séparément pour indiquer le nombre total de versions pour une version ou pour toute la durée de vie du produit.
De nombreux développeurs commencent le numéro de build à 0, et chaque fois qu'ils construisent, ils augmentent le nombre d'un, augmentant pour toujours. Dans mes projets, j'ai un script qui augmente automatiquement le nombre de build chaque fois que je construis. Voir les instructions ci-dessous.
- La version 1.0.0 pourrait être la version 542. Il a fallu 542 versions pour arriver à une version 1.0.0.
- La version 1.0.1 pourrait être la version 578.
- La version 1.1.0 pourrait être la version 694.
- La version 2.0.0 pourrait être la version 949.
D'autres développeurs, dont Apple, ont un numéro de build composé d'une version majeure + version mineure + nombre de builds pour la version. Ce sont les numéros de version du logiciel réels, par opposition aux valeurs utilisées pour le marketing.
Si vous allez dans le menu Xcode > À propos de Xcode , vous verrez les numéros de version et de build. Si vous appuyez sur le bouton Plus d'infos ... vous verrez un tas de versions différentes. Depuis le Plus d' info ... bouton a été enlevé dans Xcode 5, cette information est également disponible à partir du logiciel> Developer section du Système d' information sur l' application, disponible en ouvrant d' Apple Menu> À propos de ce Mac > System Report ... .
Par exemple, Xcode 4.2 (4C139). La version marketing 4.2 est la version 4 de la build majeure, la version mineure C de la build et le numéro de build 139. La prochaine version (probablement 4.3) sera probablement la version 4D de la build, et le numéro de build recommencera à 0 et augmentera à partir de là.
Les numéros de version / build de l'iPhone Simulator sont identiques, tout comme les iPhones, les Mac, etc.
- 3.2: (7W367a)
- 4,0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Mise à jour : sur demande, voici les étapes pour créer un script qui s'exécute chaque fois que vous créez votre application dans Xcode pour lire le numéro de build, l'incrémenter et le réécrire dans le {App}-Info.plist
fichier de l'application . Il y a des étapes supplémentaires facultatives si vous souhaitez écrire vos numéros de version / build dans vos Settings.bundle/Root*.plist
fichiers.
Ceci est étendu de l'article pratique ici .
Dans Xcode 4.2 - 5.0:
- Chargez votre projet Xcode.
- Dans le volet gauche, cliquez sur votre projet tout en haut de la hiérarchie. Cela chargera l'éditeur de paramètres du projet.
- Sur le côté gauche du volet de la fenêtre centrale, cliquez sur votre application sous l'en- tête CIBLES . Vous devrez configurer cette configuration pour chaque cible de projet.
- Sélectionnez l' onglet Build Phases .
- Dans Xcode 4, en bas à droite, cliquez sur le bouton Ajouter une phase de construction et sélectionnez Ajouter un script d'exécution .
- Dans Xcode 5, sélectionnez le menu Éditeur > Ajouter une phase de construction > Ajouter une phase de construction de script d'exécution .
- Faites glisser et déposez la nouvelle phase Exécuter le script pour la déplacer juste avant la phase Copier les ressources du bundle (lorsque le fichier app-info.plist sera fourni avec votre application).
- Dans la nouvelle Exécuter le script de phase, définissez Shell :
/bin/bash
.
Copiez et collez ce qui suit dans la zone de script pour les numéros de build entiers:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Comme l'a souligné @Bdebeez, l' outil de version générique d'Apple ( agvtool
) est également disponible. Si vous préférez l'utiliser à la place, il y a quelques choses à changer en premier:
- Sélectionnez l' onglet Paramètres de construction .
- Dans la section Versioning , définissez la version actuelle du projet sur le numéro de build initial que vous souhaitez utiliser, par exemple, 1 .
- De retour sur l' onglet Build Phases , faites glisser et déposez votre phase Run Script après la phase Copy Bundle Resources pour éviter une condition de concurrence critique lorsque vous essayez à la fois de créer et de mettre à jour le fichier source qui inclut votre numéro de build.
Notez qu'avec la agvtool
méthode, vous pouvez toujours obtenir périodiquement des builds échoués / annulés sans erreurs. Pour cette raison, je ne recommande pas d'utiliser agvtool
ce script.
Néanmoins, dans votre phase d' exécution de script , vous pouvez utiliser le script suivant:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
L' next-version
argument incrémente le numéro de build ( bump
est également un alias pour la même chose) et est mis à -all
jour Info.plist
avec le nouveau numéro de build.
Et si vous disposez d'un ensemble de paramètres dans lequel vous affichez la version et la build, vous pouvez ajouter ce qui suit à la fin du script pour mettre à jour la version et la build. Remarque: modifiez les PreferenceSpecifiers
valeurs pour qu'elles correspondent à vos paramètres. PreferenceSpecifiers:2
signifie regarder l'élément à l'index 2 sous le PreferenceSpecifiers
tableau dans votre fichier plist, donc pour un index basé sur 0, c'est le 3ème paramètre de préférence dans le tableau.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Si vous utilisez agvtool
au lieu de lire Info.plist
directement, vous pouvez ajouter ce qui suit à votre script à la place:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Et si vous avez une application universelle pour iPad et iPhone, vous pouvez également définir les paramètres du fichier iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist