¡Hay 2 números!
El número de versión de marketing es para los clientes, llamado número de versión . Comienza con 1.0 y sube para actualizaciones importantes a 2.0 , 3.0 , para actualizaciones menores a 1.1 , 1.2 y para correcciones de errores a 1.0.1 , 1.0.2 . Este número está orientado sobre lanzamientos y nuevas características. No tiene que detenerse en 9, 1.11.23 es un número de versión razonable.
El número de compilación es principalmente el número interno de compilaciones que se han realizado hasta entonces. Pero algunos usan otros números como el número de sucursal del repositorio o su número de confirmación. Este número debe ser único para distinguir las diferentes compilaciones, que solo tienen cambios incrementales menores.
Para obtener el número de versión :
C objetivo:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
Swift <3.0:
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
Swift 3.0+ (probado con 5.0):
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
Para obtener el número de compilación :
C objetivo:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
Swift <3.0:
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
Swift 3.0+ (probado hasta 5.0):
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
Si quieres ambos en uno:
Primero use las líneas anteriores y luego la siguiente.
C objetivo:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
Swift (probado hasta 5.0):
let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"
Notas:
Los valores en el paquete principal no siempre están presentes, por ejemplo, en una aplicación de línea de comandos no hay CFBundleShortVersionString
o CFBundleVersion
, por lo que los métodos devolveránnil
y se bloqueará porque en el código hace un downcast incorrecto. Pero en las aplicaciones normales de Cocoa para iOS y Mac, estos valores están definidos y no se eliminarán.
Esto se prueba con Xcode Versión 7.3 (7D175) . El número de compilación a menudo se escribe entre paréntesis / llaves. El número de compilación está en hexadecimal o decimal.
En Xcode , puede aumentar automáticamente el número de compilación como un número decimal colocando lo siguiente en la Run script
fase de compilación en la configuración del proyecto
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Para el número de compilación hexadecimal, use este script
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Para Xcode
hacer lo siguiente:
Paso 1
Paso 2
Paso 3