Probablemente la manera más simple es utilizar PlistBuddy. Tengo una fase de ejecución de secuencias de comandos que se ve así:
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
(Tenga en cuenta que a partir de Xcode 6, hay que ejecutar este después de la fase de copia de Recursos Bundle, porque Info.plist
no se copia en la ubicación de destino hasta entonces y PlistBuddy fallaría.)
Editar 01/17: Se actualizó para evitar la copia innecesaria o la firma de objetivos. No desea tocar Info.plist a menos que algo realmente cambie, de lo contrario Xcode lo tratará (y, por tanto, el destino) como modificado. Verificar el valor anterior CFBundleVersion
puede acelerar significativamente las compilaciones; me ha ahorrado varios segundos en la compilación de noop.
Gracias! Pero, ¿cómo puedo abrir un archivo y leer su texto durante esta fase? – Mithin
@Mithin: depende completamente del idioma en el que escriba el script de shell. – PeyloW
¿Qué sucede si la clave es un booleano? No aceptará los marcadores de posición del nombre de la variable de entorno. –