iOS: Modification de info.plist pendant la phase de construction

J'essaie de faire ce qui suit:

  1. Pendant la phase de construction, ouvrez un file text brut et lisez le text
  2. Modifiez la valeur d'une propriété dans info.plist à la valeur obtenue à l'étape 1.

Puis-je écrire un script shell pour cela?

Ce sera génial si quelqu'un peut me guider pour y parvenir.

    Oui, vous pouvez. Je le ferais en trois étapes:

    1. Ecrivez un script shell qui est exécuté avant la première phase de construction. Laissez ce script définir une variable d'environnement.
    2. Activez "Développer les parameters de construction dans Info.plist" pour votre projet.
    3. Utilisez la variable d'environnement dans le file plist comme ${MY_COOL_SETTING} .

    Probablement le moyen le plus simple est d'utiliser PlistBuddy. J'ai une phase de script d'exécution qui ressemble à ceci:

     BUILD_NUMBER=`git rev-list HEAD --count` INFO_PLIST="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" if [ -f "$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" ] ; then oldversion=`/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$INFO_PLIST"` fi if [ "$BUILD_NUMBER" != "$oldversion" ] ; then /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFO_PLIST" fi 

    (Notez qu'à partir de Xcode 6, vous devez l'exécuter après la phase de copy des ressources de l'set, car Info.plist n'est pas copié jusqu'à l'location cible et PlistBuddy échouera.)

    Edit 01/17: Mise à jour pour éviter la copy ou la signature inutile des cibles. Vous ne voulez pas toucher Info.plist à less que quelque chose ne change vraiment, sinon Xcode le traitera (et donc la cible) comme modifié. Vérification de la valeur précédente CFBundleVersion peut considérablement accélérer les builds – cela m'a sauvé plusieurs secondes sur noop build.

    @PeyloW offre un moyen de le faire. L'autre façon de le faire est d'append une étape de génération de script. Dans cette étape, vous pouvez réécrire votre Info.plist comme vous le souhaitez. Je fais cela tout le time pour définir la svnversion.

    Je recommand de mettre votre script dans un file, puis de le mettre . myscript.sh . myscript.sh dans la phase d' . myscript.sh du script. C'est plus facile à comprendre et à maintenir que de mettre tout le script directement dans Xcode.

    J'ai un file script qui met un numéro de build dans un champ dans mon info.plist. Je mets du text dans le file info.plist du projet, puis le script le remplace. Il incrémente uniquement le nombre de build sur les versions de version. Sur les builds de développement, il dit juste qu'ils sont une construction de développement.

      if [ "$BUILD_STYLE" = "Release" ] then if [ ! -f build-number ]; then echo 0 > build-number else expr `cat build-number` + 1 > build-number.new mv build-number.new build-number fi perl -pi -es/BUILD_NUMBER_PLACEHOLDER/`cat build-number`/ $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Info.plist else perl -pi -es/BUILD_NUMBER_PLACEHOLDER/`echo Development`/ $BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Info.plist fi