update tools online framework for compilador ios xcode build xcode4

ios - tools - ¿Cómo auto-incrementar la versión de paquete en Xcode 4?



xcode online (8)

1, establece CFBundleVersion en 1.0.1 o algo así como xxx

2, agregar fases de compilación para ejecutar shell script autoVersion.sh

3, guarde debajo del script llamado autoVersion.sh

#!/bin/sh # Auto Increment Version Script # set CFBundleVersion to 1.0.1 first!!! # the perl regex splits out the last part of a build number (ie: 1.1.1) and increments it by one # if you have a build number that is more than 3 components, add a ''/./d+'' into the first part of the regex. buildPlist=${INFOPLIST_FILE} newVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$buildPlist" | /usr/bin/perl -pe ''s/(/d+/./d+/.)(/d+)/$1.($2+1)/eg''` #echo $newVersion; /usr/libexec/PListBuddy -c "Set :CFBundleVersion $newVersion" "$buildPlist"

4, ejecute shell: cp autoVersion.sh ~ / Documents / y chmod 777 ~ / Documents / autoVersion.sh

5, Constrúyelo y disfrútalo. :)

código perl desde: https://gist.github.com/1436598

Estoy tratando de averiguar cómo hacer que el número de versión del paquete se incremente automáticamente en mi proyecto Xcode 4 (para compilaciones ad-hoc y de versiones) Encontré algunos scripts en línea que pretenden hacer esto, pero no estoy seguro de si colocarlos en las "Acciones previas" o "Acciones posteriores". Tampoco estoy seguro de qué valor debo poner en la lista; ¿Un número que el script cambiará o una variable?

Todas las opciones que he probado hasta ahora no parecen funcionar, por lo que cualquier ayuda sería muy apreciada.

A continuación se muestra el script más reciente que intenté usar:

conf=${CONFIGURATION} arch=${ARCHS:0:4} # Only increase the build number on Device and AdHoc/AppStore build if [ $conf != "Debug" ] && [ $conf != "Release" ] && [ $arch != "i386" ] then buildPlist=${INFOPLIST_FILE} buildVersion=$(/usr/libexec/PlistBuddy -c "Print CFBuildVersion" $buildPlist) buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist) buildNumber=$(($buildNumber + 1)) /usr/libexec/PlistBuddy -c "Set :CFBuildNumber $buildNumber" $buildPlist /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildVersion.$buildNumber" $buildPlist /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $buildVersion.$buildNumber" $buildPlist fi


Esto podría ayudarte. Lo estoy usando en mis proyectos. https://gist.github.com/alokc83/5207294

#!/bin/sh # xcode-build-number-generator.sh # @desc Automaticvally create build number every time using curent day, month and year # @usage # 1. Select: your Target in Xcode # 2. Select: Build Phases Tab # 3. Select: Add Build Phase -> Add Run Script # 4. Paste code below in to new "Run Script" section # 5. Drag the "Run Script" below "Link Binaries With Libraries" #Credits # sekati@github for intial direction about automatic versioning # http://www.codinghorror.com/blog/2007/02/whats-in-a-version-number-anyway.html (For unferstanding the Software Versoining) #Feel free to leave comment or report issues MONTH=`date | awk ''{print $2}''` case "$MONTH" in ''Jan'' ) MONTHNUMBER=1 ;; ''Feb'' ) MONTHNUMBER=2 ;; ''Mar'' ) MONTHNUMBER=3 echo "Month is $MONTHNUMBER" ;; ''Apr'' ) MONTHNUMBER=4 ;; ''May'' ) MONTHNUMBER=5 ;; ''Jun'' ) MONTHNUMBER=6 ;; ''Jul'' ) MONTHNUMBER=7 ;; ''Aug'' ) MONTHNUMBER=8 ;; ''Sep'' ) MONTHNUMBER=9 ;; ''Oct'' ) MONTHNUMBER=10 ;; ''Nov'' ) MONTHNUMBER=11 ;; ''Dec'' ) MONTHNUMBER=12 ;; esac DATE=`date | awk ''{print $3}''` echo "Date = $DATE" YEAR=`date | awk ''{print $6}''` echo "Date = $YEAR" ### only uncomment section below if testing the format in terminal #echo "BuildNumber1 = $MONTH$DATE$YEAR" #echo "or BUILD NUMBER = $DATE$MONTH$YEAR" #echo "or BUILD NUMBER = $MONTHNUMBER$DATE$YEAR Format is |Month Number Date Year|" #echo "or BUILD NUMBER = $DATE$MONTHNUMBER$YEAR format is |Date MonthNumber Year|" ############################ #### Uncomment only one one style or last one will be in effect #buildNumber=$MONTH$DATE$YEAR #buildNumber=$DATE$MONTH$YEAR buildNumber=$MONTHNUMBER$DATE$YEAR #buildNumber=$DATE$MONTHNUMBER$YEAR echo "Final Build number is $buildNumber" ## Below command write buildNumber in the property list /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"


FWIW: esto es lo que estoy usando actualmente para aumentar el número de compilación solo para compilaciones de lanzamiento (que incluye archivar). Funciona bien bajo Xcode 5.1.

Simplemente copie / pegue el fragmento en una fase de compilación del script de ejecución directamente en Xcode:

buildnum=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$PRODUCT_SETTINGS_PATH") if [ "$CONFIGURATION" = "Release" ]; then buildnum=$((buildnum + 1)) echo "Build number updated to $buildnum" /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildnum" "$PRODUCT_SETTINGS_PATH" fi;


He encontrado que el uso de xcconfigs en niveles ayuda a este problema.

Al trabajar en compilaciones complejas con aplicaciones, bibliotecas y SDK, debe ser capaz de coordinar no solo los números de compilación por proyecto, sino la compatibilidad de compilación de números.

Puede crear un encabezado de gestión de compilación que sea efectivamente un archivo de texto con números de iteración de compilación (o información de versiones, es decir, beta, dev, rel) e importarlo a través de la cadena de importación xcconfig por proyecto.

En ese momento, puede tener un paso de script de compilación de destino que incrustará su información de compilación / control de versiones. Esto también se hace mejor colocando el texto de retención en su lista y ejecutando PlistBuddy en las secciones de archivo generado / archivo derivado. (De esta manera los cambios en el control de su fuente son mínimos)

Si puede escribir un script de ejecución de compilación que haga el número de compilación necesario (o, mejor aún, use un sistema como el de bambú que crea el archivo por usted), puede mantenerlo separado de su código. Por supuesto, si necesita hacerlo y hacer un seguimiento, es posible que deba verificar el número de compilación modificado para permitir que se incremente.

Como resultado de esto, he podido mantener los números de compilación a lo largo de la línea de: 2.0.3 b34 (3473) Donde tenemos un número de compilación y un punto de compilación de verificación de SVN. (Por favor, no git novatada, soy de la vieja escuela)

Las acciones previas / posteriores son más para las notificaciones o procesos de Uber: envíe por correo electrónico que la compilación se inició / falló / etc Copie el proyecto finalizado en el servidor del proyecto finalizado.

Todo lo demás funciona mejor como un script de construcción.

(Y como siempre: haga que la fase del script llame a un archivo de script externo. NO inserte su script en el proyecto, es un infierno que controla el archivo del proyecto)

Espero que esto ayude.


La misma idea que la respuesta de Alix, pero mucho más simple:

buildNumber=`/bin/date +%Y%m%d%H%M%S` /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

Agregue esto como un elemento Run Script en las Build Phases en su Target . Esto tiene la ventaja de ser monótonamente creciente también.


Para cualquier persona que desee integrar el incremento de versión en una secuencia de comandos de compilación de línea de comandos (quizás para una integración continua), vea los siguientes comandos:

# cd into the project folder containing the plist cd /Users/waitea/iOS/E.ON/iOS/trunk/Eon # grab the version numbers major_version=$(grep -C 2 CFBundleVersion App-Info.plist | grep -o ''[0-9]/+.[0-9]/+.[0-9]/+'') major_version_min=$(echo $major_version | grep -o ''[0-9]/+.[0-9]/+/.'') minor_version=$(echo $major_version | grep -o ''[0-9]/+$'') # increment the minor version increment=`expr $minor_version + 1` incremented_whole_version="$major_version_min$increment" # replace the build number in the plist using perl /usr/bin/perl -p -i -e "s/$major_version/$incremented_whole_version/g" App-Info.plist

Eso incrementará el número más a la derecha en un número de versión de estilo xxx. Modifica los registros para modificar tu convención.

Me tomó un tiempo, así que pensé en compartir para devolver a la comunidad.

EDITAR - Creé un sistema de integración continua que lo hará por usted.

https://github.com/adamwaite/XcodeProject


Puede encontrar útil la siguiente publicación:

Incremento automático de números de compilación para compilaciones de lanzamiento en Xcodefrom iPhone Development por Jeff LaMarche


Si está utilizando un sistema de versión como "xxx", puede agregar este script de ejecución. Incrementará el número de versión (xxx + 1) cada vez que se realice una nueva construcción:

if [ "${CONFIGURATION}" != "Debug" ]; then VERSIONNUM=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") NEWSUBVERSION=`echo $VERSIONNUM | awk -F "." ''{print $4}''` NEWSUBVERSION=$(($NEWSUBVERSION + 1)) NEWVERSIONSTRING=`echo $VERSIONNUM | awk -F "." ''{print $1 "." $2 "." $3 ".''$NEWSUBVERSION''" }''` /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NEWVERSIONSTRING" "${PROJECT_DIR}/${INFOPLIST_FILE}" fi