Apple reorganizó / reutilizó los campos.
En el futuro, si busca en la pestaña Información el destino de su aplicación, debe usar la "Cadena de versiones de paquete, corta" como su Versión (por ejemplo, 3.4.0) y la "Versión de paquete" como su Compilación (por ejemplo, 500 o 1A500 ) Si no los ve a ambos, puede agregarlos. Esos se asignarán a la versión adecuada y crearán cuadros de texto en la pestaña Resumen; Son los mismos valores.
Al ver la pestaña Información, si hace clic con el botón derecho y selecciona Mostrar claves / valores sin formato , verá que los nombres reales son CFBundleShortVersionString
(Versión) y CFBundleVersion
(Compilación).
La versión se usa generalmente como parece que la has estado usando con Xcode 3. No estoy seguro de en qué nivel estás preguntando sobre la diferencia de Versión / Compilación, así que lo responderé filosóficamente.
Hay todo tipo de esquemas, pero uno popular es:
{MajorVersion}. {MinorVersion}. {Revisión}
- Versión principal: cambios importantes, rediseños y cambios de funcionalidad
- Versión menor: mejoras menores, adiciones a la funcionalidad
- Revisión : un número de parche para corregir errores
Luego, la Compilación se usa por separado para indicar el número total de compilaciones para una versión o para toda la vida útil del producto.
Muchos desarrolladores comienzan el número de compilación en 0, y cada vez que construyen aumentan el número en uno, aumentando para siempre. En mis proyectos, tengo un script que aumenta automáticamente el número de compilación cada vez que construyo. Vea las instrucciones para eso a continuación.
- La versión 1.0.0 podría ser la versión 542. Se necesitaron 542 versiones para llegar a la versión 1.0.0.
- La versión 1.0.1 podría ser la compilación 578.
- La versión 1.1.0 podría ser la compilación 694.
- La versión 2.0.0 podría ser la compilación 949.
Otros desarrolladores, incluido Apple, tienen un número de compilación compuesto por una versión principal + versión secundaria + número de compilaciones para el lanzamiento. Estos son los números de versión de software reales, en oposición a los valores utilizados para el marketing.
Si va al menú Xcode > Acerca de Xcode , verá los números de Versión y Compilación. Si presiona el botón Más información ... verá un montón de versiones diferentes. Desde el Más información ... botón se retira en Xcode 5, esta información también está disponible en el software> desarrollador sección de la información del sistema de aplicaciones, disponible mediante la apertura de Apple menú> Acerca de este Mac > Informe del sistema ... .
Por ejemplo, Xcode 4.2 (4C139). La versión 4.2 de Marketing es Build versión principal 4, Build versión secundaria C y Build number 139. La próxima versión (presumiblemente 4.3) probablemente sea Build release 4D, y el número de Build comenzará de nuevo en 0 e incrementará a partir de ahí.
Los números de versión / compilación del simulador de iPhone son iguales, al igual que los iPhone, Mac, etc.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Actualización : a pedido, estos son los pasos para crear un script que se ejecuta cada vez que compila su aplicación en Xcode para leer el número de compilación, incrementarlo y volver a escribirlo en el {App}-Info.plist
archivo de la aplicación . Hay pasos adicionales opcionales si desea escribir sus números de versión / compilación en sus Settings.bundle/Root*.plist
archivos.
Esto se extiende desde el artículo de cómo hacerlo aquí .
En Xcode 4.2 - 5.0:
- Cargue su proyecto Xcode.
- En el panel izquierdo, haga clic en su proyecto en la parte superior de la jerarquía. Esto cargará el editor de configuración del proyecto.
- En el lado izquierdo del panel de la ventana central, haga clic en su aplicación debajo del encabezado OBJETIVOS . Deberá configurar esta configuración para cada objetivo del proyecto.
- Seleccione la pestaña Fases de construcción .
- En Xcode 4, en la parte inferior derecha, haga clic en el botón Agregar fase de compilación y seleccione Agregar secuencia de comandos de ejecución .
- En Xcode 5, seleccione el menú Editor > Agregar fase de compilación > Agregar fase de compilación de script de ejecución .
- Arrastre y suelte la nueva fase Ejecutar script para moverla justo antes de la fase Copiar recursos de paquete (cuando el archivo app-info.plist se incluirá con su aplicación).
- En el nuevo Ejecutar script fase, establecer Shell :
/bin/bash
.
Copie y pegue lo siguiente en el área de script para números de compilación de enteros:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Como señaló @Bdebeez, la herramienta de versiones genéricas de Apple ( agvtool
) también está disponible. Si prefieres usarlo, primero debes cambiar un par de cosas:
- Seleccione la pestaña Configuración de compilación .
- En la sección Control de versiones , establezca la Versión del proyecto actual en el número de compilación inicial que desea usar, por ejemplo, 1 .
- De vuelta en la pestaña Fases de compilación , arrastre y suelte la fase Ejecutar script después de la fase Copiar recursos de paquete para evitar una condición de carrera al intentar compilar y actualizar el archivo fuente que incluye su número de compilación.
Tenga en cuenta que con el agvtool
método aún puede obtener periódicamente compilaciones fallidas / canceladas sin errores. Por esta razón, no recomiendo usar agvtool
con este script.
Sin embargo, en la fase Ejecutar script , puede usar el siguiente script:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
El next-version
argumento incrementa el número de compilación ( bump
también es un alias para lo mismo) y se -all
actualiza Info.plist
con el nuevo número de compilación.
Y si tiene un paquete de configuración donde muestra la versión y la compilación, puede agregar lo siguiente al final del script para actualizar la versión y la compilación. Nota: Cambie los PreferenceSpecifiers
valores para que coincidan con su configuración. PreferenceSpecifiers:2
significa mirar el elemento en el índice 2 debajo de la PreferenceSpecifiers
matriz en su archivo plist, por lo que para un índice basado en 0, esa es la tercera configuración de preferencia en la matriz.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Si está utilizando en agvtool
lugar de leer Info.plist
directamente, puede agregar lo siguiente a su secuencia de comandos:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Y si tiene una aplicación universal para iPad y iPhone, también puede establecer la configuración para el archivo de iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist