9
votes

BASH Script pour modifier le champ CFBUndolversion de Project-Info.Plist File

Pour mettre en place un système d'intégration continue, Hudson, j'ai écrit un script Bash pour construire automatiquement le projet Xcode. De plus, dans la configuration de débogage, il m'a été demandé, d'insérer le numéro de révision SVN du projet dans le champ CFBundleReVision du fichier Project-info.plist comme $ {bundle_version} .R $ {svn_revision}.

vous ' ll Trouver le code source de Project-info.Plist Fichier ci-dessous: P>

sed 'N;s_^.*<key>CFBundleVersion</key>.*<string>[0-9][0-9]*\.[0-9][0-9]*</string>$_<key>CFBundleVersion</key>\
<string>'"$BUNDLE_VERSION"'\.r'"$SVN_REVISION"'</string>_' $PROJECT-Info.plist


2 commentaires

Vous devez utiliser un outil XML approprié tel qu'un module Python ou Perl conçu dans le but de manipuler les clés et les valeurs dans un fichier XML. Il existe également des utilitaires shell disponibles telles que XMLStarlet. Regex ne sont pas au défi . Au fait, votre anglais est très presque parfait.


Merci pour le Solution XMLStarlet SHELL UTILITY. J'ai téléchargé et l'installé. Je vais le tester demain et je vais vous donner mes commentaires.


3 Réponses :


0
votes
$ myversion=1.0.3
$ perl -O777 -i.bak -pe 's|<key>CFBundleVersion</key>\\s*<string>[\d.]*</string>|<key>CFBundleVersion</key></key>'"$myversion"'<string>|' bundle
Moves the file bundle to bundle.bak, and replaces 1.0.6.9 with 1.0.3 in the new bundle file.

2 commentaires

Je vais d'abord essayer cette solution quand je retournerai au travail demain. Merci :)


Je suis tellement curieux que j'ai essayé immédiatement et ça marche bien! Je modifie simplement cette ligne de commande comme ci-dessous parce que je fais une sauvegarde du fichier .plist plus tôt dans mon script et je la restaore à la fin. Perl -0777 -PE "S | CFBUndolversion \ s * [\ d.] * | cfbundersion $ Bundle_ve RSION.R $ Révision | " Projet-info.plist.bak> Project-info.Plist Merci à vous deux.



28
votes

Utilisez PlistBuddy:

# cf. http://davedelong.com/blog/2009/04/15/incrementing-build-numbers-xcode
/usr/libexec/PlistBuddy -h
/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" test.plist
myversion=1.0.5
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion '${myversion}'" test.plist


1 commentaires

Merci. C'est la bonne façon de le faire. L'autre réponse est un hack très inutile.



7
votes

Dans ce cas spécifique, vous pouvez également utiliser Xcode's agvtool code> . Vous n'avez même pas besoin de fournir le chemin du fichier du projet-Info.Plist. À l'intérieur de votre projet RUN RUN:

agvtool new-version -all "$BUILD_NUMBER" # sets CFBundleVersion
agvtool new-marketing-version "$BUNDLE_VERSION" # sets CFBundleShortVersionString


2 commentaires

Le lien de wiki est mort.


Travaille pour moi! Merci! L'AGVTOOL doit être utilisé dans le dossier de projet.