iphone - publicar - "Número de compilación" del proyecto Xcode
swift ios (8)
Además, si agrega CFBuildDate como una cadena y CFBuildNumber como una cadena en su lista de información, la siguiente secuencia de comandos de shell (cuando se agrega a la fase de compilación del script de ejecución / bin / bash actualizará automáticamente su número y fecha de compilación:
# Auto Increment Version Script
buildPlist=${INFOPLIST_FILE}
CFBuildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
CFBuildNumber=$(($CFBuildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $CFBuildNumber" $buildPlist
CFBuildDate=$(date +%Y%m%d%H%M%S)
/usr/libexec/PlistBuddy -c "Set :CFBuildDate $CFBuildDate" $buildPlist
¿Qué es un número de compilación y para qué sirve? ¿Es lo mismo que el número de versión?
El Número de compilación es para actualizaciones menores (por lo general, es bastante alto 1 al principio y puede terminar en 1000), por ejemplo, si cambia un par de líneas de código pero no cambia la lógica o crea nuevas funciones en su actualización. El número de versión es para actualizaciones bastante grandes, por ejemplo, nuevas funciones en su aplicación. Entonces puedes cambiarlo de 1.8 a 2.0.
El número de compilación es un número interno que indica el estado actual de la aplicación. Difiere del número de la versión en que normalmente no se enfrenta al usuario y no denota ninguna diferencia / características / actualizaciones como lo haría normalmente un número de versión.
Piensa en esto, de esta manera:
- Build (CFBundleVersion): El número de la compilación. Por lo general, comienza esto en 1 y aumenta en 1 con cada compilación de la aplicación. Permite rápidamente comparaciones de qué compilación es más reciente y denota el sentido de progreso del código base. Estos pueden ser abrumadoramente valiosos cuando se trabaja con control de calidad y es necesario asegurarse de que los errores se registren en las compilaciones correctas.
- Versión de marketing (CFBundleShortVersionString): el número de usuario que está utilizando para denotar esta versión de su aplicación. Por lo general, esto sigue un esquema de versión Major.minor (por ejemplo, MyAwesomeApp 1.2) para que los usuarios sepan qué versiones son actualizaciones de mantenimiento más pequeñas y cuáles son nuevas características de gran importancia.
Para usar esto de manera efectiva en sus proyectos, Apple proporciona una gran herramienta llamada agvtool. Le permite configurar fácilmente el número de compilación y la versión de marketing. Es particularmente útil cuando se realizan secuencias de comandos (por ejemplo, actualizar fácilmente el número de compilación en cada compilación o incluso consultar cuál es el número de compilación actual). Incluso puede hacer cosas más exóticas como etiquetar su SVN para usted cuando actualiza el número de compilación.
Para usarlo:
- Configure su proyecto en Xcode, bajo Control de versiones, para usar "Apple Genérico".
- En la terminal
- agvtool new-version 1 (establecer el número de compilación a 1)
- agvtool new-marketing-version 1.0 (establezca la versión de Marketing en 1.0)
Vea la página de manual de agvtool para una tonelada de buena información
Esto funciona en Xcode 6 y también modifica el diccionario de información dSYM, solo al archivar:
if [ "${CONFIGURATION}" = "Release" ]; then
buildPlist="${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist"
PlistBuddy="/usr/libexec/PlistBuddy"
CFBundleVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}")
CFBundleVersion=$(($CFBundleVersion + 1))
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$buildPlist"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "$INFOPLIST_FILE"
$PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" "${DWARF_DSYM_FOLDER_PATH}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
fi
Esto me funciona en Xcode 6:
cd ${SOURCE_ROOT}
buildPlist=${SOURCE_ROOT}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist
PlistBuddy="/usr/libexec/PlistBuddy"
buildNumber=`git rev-list HEAD --count`
buildNumber=$(($buildNumber + 1))
$PlistBuddy -c "Set :CFBundleVersion $buildNumber" $buildPlist
Estoy usando Xcode 4.3.3 (4E3002) y logré que el número de compilación (CFBundleVersion) aumentara automáticamente cada compilación con los siguientes pasos:
- Seleccione el elemento de menú Producto / Editar esquema ... (Comando + <)
- Amplió la fase de construcción.
- Seleccionar acciones previas
- Haga clic en el signo más para agregar "Nueva acción de secuencia de comandos de ejecución"
- Ingresó "/ bin / bash" como el "Shell"
- Seleccione uno de los objetivos en "Proporcionar configuración de construcción desde"
Ingresó el siguiente código:
buildPlist=$SRCROOT/$INFOPLIST_FILE PlistBuddy="/usr/libexec/PlistBuddy" CFBundleVersion=`$PlistBuddy -c "Print CFBundleVersion" $buildPlist` CFBundleVersion=$(($CFBundleVersion + 1)) $PlistBuddy -c "Set :CFBundleVersion $CFBundleVersion" $buildPlist
¡Que te diviertas!
Muchas personas usan el número de compilación para rastrear el número total de veces que se "construye" un proyecto (simplemente se compila para proyectos pequeños, quizás un proceso más complejo para proyectos más grandes).
El número de compilación es un valor absoluto incrementado en cada compilación. Un número de versión, por otro lado, es una "etiqueta" o "etiqueta" arbitraria utilizada como abreviatura para un número de compilación específico.
Entonces, digamos que ha construido su proyecto 123 veces, su número de compilación es "123", pero puede decidir referirse a eso como "versión 1.0" por razones de simplicidad. Si construyes otras 20 veces para corregir un error, tu número de compilación es 143, pero tu versión es "1.01" o "1.1" o como sea que decidas nombrarlo.
También he visto proyectos que basan sus números de compilación en el control de código fuente. Por lo tanto, un equipo de CVS / SVN puede usar el número de revisión como su número de compilación. También he visto proyectos git que usan el SHA del último compromiso como un número de compilación (aunque algunas herramientas de administración asumen que el número de compilación es un valor incremental, y obviamente en el caso de los SHA, no lo es).
Si desea usar un campo DATE para CFBuildDate, use:
# get UTC date
CFBuildDate=$(date -u +"%a %b %d %T GMT %Y")
por cierto gran punta de cdasher