subir - ¿Qué versión/número de compilación de la aplicación iOS DEBE incrementarse en el lanzamiento de la App Store?
subir app a app store 2018 (7)
AFAIK, desde el principio, solo necesita incrementar el número de compilación CFBundleVersion
. Incrementar la cadena de la versión corta no es necesariamente necesario, aunque probablemente debería incrementarla, ya que le dice al usuario que la aplicación es nueva. Sin embargo, Apple dice que la numeración debe seguir las convenciones tradicionales de versiones de software, e iTunes Connect puede quejarse si intenta volver a cargar una versión ya existente.
Larga historia corta, puede funcionar, pero probablemente no.
Los campos de versión / compilación para una aplicación iOS incluyen:
"Version" CFBundleShortVersionString (String - iOS, OS X) especifica el número de versión de lanzamiento del paquete, que identifica una iteración liberada de la aplicación. El número de versión de lanzamiento es una cadena que consta de tres enteros separados por puntos.
"Build" CFBundleVersion (String - iOS, OS X) especifica el número de versión de compilación del paquete, que identifica una iteración (liberada o no lanzada) del paquete. El número de versión de la compilación debe ser una cadena compuesta por tres enteros no negativos, separados por puntos, con el primer entero mayor que cero. La cadena solo debe contener caracteres numéricos (0-9) y puntos (.). Los ceros iniciales se truncan de cada entero y se ignorarán (es decir, 1.02.3 es equivalente a 1.2.3). Esta clave no es localizable.
"Número de versión de iTunes Connect" : número de versión que especifica al crear una nueva versión de la aplicación en iTunes Connect.
Mi pregunta es:
¿Qué números de versión / compilación deben incrementarse cuando se carga una nueva versión de la aplicación en iTunes Connect y / o se lanza a la App Store?
¿Puede la "versión" CFBundleShortVersionString
o la "compilación" CFBundleVersion
seguir siendo la misma entre las actualizaciones de la aplicación?
Puntos adicionales para las fuentes de Apple o los mensajes de error exactos que muestra iTunesConnect al cargar un número de versión / compilación no válido.
Android / Google Play nota:
La discusión que plantea esta pregunta es que la "versión" pública de una aplicación de Android en Google Play Store no necesita incrementarse y de ninguna manera está validada. El android:versionName
puede seguir siendo el mismo entre versiones, actualizaciones, versiones anteriores o cualquier cadena aleatoria en lugar de algo que parece ser un "número de versión" válido.
android:versionName
: un valor de cadena que representa la versión de lanzamiento del código de la aplicación, como se debe mostrar a los usuarios.El valor es una cadena para que pueda describir la versión de la aplicación como una cadena
<major>.<minor>.<point>
, o como cualquier otro tipo de identificador de versión absoluto o relativo.
Diferencia entre versionName y versionNumber en Android
Mientras que android:versionCode
se aplica para que sea un entero de incremento en el lanzamiento.
Documentación de apple
Como se señaló en la respuesta recientemente aceptada , Apple ha publicado recientemente una Nota técnica que detalla su esquema de versión y número de compilación:
Apple Technical Note TN2420 - Números de versión y números de compilación
CFBundleVersion y CFBundleShortVersionString deben ser mayores que el último número de versión de la aplicación. Es una buena práctica mantenerlos igual. Deberías encontrarlos en tu -info.plist.
Cuando intenta validar la aplicación en el organizador, se producirá un error si alguno de ellos no se ha incrementado. Me pasó anoche.
El CFBundleShortVersionString
debe coincidir con el número de versión que le da a iTunes Connect. También es el número de versión que aparece cuando el usuario mira su aplicación en la App Store.
El número de versión se muestra en la tienda y esa versión debe coincidir con el número de versión que ingrese más adelante en iTunes Connect.
El CFBundleVersion
no se muestra en la App Store, pero es utilizado por iTunes para determinar cuándo se ha actualizado su aplicación.
Si actualiza la cadena de compilación, como se describe en “Configuración del número de versión y la cadena de compilación”, iTunes reconoce que la cadena de compilación cambió y sincroniza correctamente el nuevo paquete de la tienda de aplicaciones de iOS para probar los dispositivos.
Respondiendo a sus preguntas más específicamente ...
¿Qué números de versión / compilación deben incrementarse cuando se carga una nueva versión de la aplicación en la tienda de aplicaciones?
Ambos. Uno se muestra en la App Store, el otro es utilizado por iTunes para actualizar la aplicación.
¿Pueden CFBundleShortVersionString o CFBundleVersion seguir siendo el mismo entre las actualizaciones de la aplicación?
No. (Meta pregunta, ¿cuál sería el caso de uso aquí? Si ha editado la carga útil de alguna manera, la compilación será diferente y el usuario querrá saberlo). Si lo intentas, verás mensajes de error como a continuación:
¿O se comparan con el número respectivo anterior para garantizar que se carga un número numéricamente mayor con la nueva versión de la aplicación?
Sí. Usando el estándar semver.org .
¿Son los números CFBundleShortVersionString y CFBundleVersion de alguna manera comparados entre sí?
No.
Necesitas incrementar ambos .
Cuando cargue una nueva versión, deberá crear una nueva versión en iTunes Connect, que automáticamente será más alta que las versiones anteriores. Esta versión en el iTunes Connect esperará un binario con el mismo número de versión, por lo que CFBundleShortVersionString
debe incrementarse.
Si actualiza la versión pero olvida incrementar la CFBundleVersion
, encontrará un error durante la carga. Ver la respuesta de pkamb y la captura de pantalla.
Para obtener detalles sobre CFBundleShortVersionString
y CFBundleVersion
, consulte: https://.com/a/31921249/936957
Tanto CFBundleVersion
como CFBundleShortVersionString
DEBEN incrementarse al lanzar una nueva versión a la App Store.
Además, una de las cadenas debe coincidir con la versión especificada en iTunes Connect.
Esta pregunta incluye la captura de pantalla anterior del Validador del organizador de Xcode que se niega a validar la aplicación cuando la CFBundleVersion
y la CFBundleShortVersionString
no se han incrementado.
Este paquete no es válido. El valor de la clave
CFBundleVersion
[1.0] en el archivo Info.plist debe contener una versión más alta que la de la versión cargada anteriormente [1.134].Este paquete no es válido. El valor de la clave
CFBundleShortVersionString
[1.0] en el archivo Info.plist debe contener una versión más alta que la de la versión cargada anteriormente [1.134].
El validador también arroja un error que prueba que una de las cadenas debe coincidir con la versión de la aplicación creada en iTunes Connect.
- Versión no coincide. Ni CFBundleVersion [''1.0''] ni CFBundleShortVersionString [''1.0''] en Info.plist coinciden con la versión de la aplicación establecida en iTunes Connect [''1.4''].
Apple Technical Note TN2420, Números de versión y Números de compilación
Resumen:
- El par (
Version
,Build number
) debe ser único.- La secuencia es válida: (1.0.1, 12) -> (1.0.1, 13) -> (1.0.2, 13) -> (1.0.2, 14) ...
-
Version
( CFBundleShortVersionString ) debe estar en orden secuencial ascendente. -
Build number
( CFBundleVersion ) debe estar en orden secuencial ascendente.
Número de versión y lista de verificación del número de compilación
Aquí hay algunas cosas que puede verificar al enviar una nueva compilación a la App Store. Asegurarse de tener su Número de versión y Número de compilación configurados correctamente lo ayudará a evitar que su aplicación se rechace automáticamente por configurarlos incorrectamente.
- Para cada nueva versión de su aplicación, necesita inventar un nuevo número de versión. Este número debe tener un valor mayor que el último Número de versión que utilizó. Aunque puede proporcionar muchas compilaciones para cualquier versión particular de su aplicación, solo necesita usar un nuevo número de versión para cada nueva versión de su aplicación.
- No puede reutilizar los números de versión.
- Para cada nueva compilación que envíe, deberá inventar un nuevo Número de compilación cuyo valor sea mayor que el último Número de compilación que utilizó (para esa misma versión).
- Puede reutilizar números de compilación en diferentes trenes de lanzamiento, pero no puede reutilizar números de compilación dentro del mismo tren de lanzamiento.
Basado en la lista de verificación, la siguiente secuencia (Version, Build Number)
es válida.
Caso: reutilizar
Build Number
en diferentes trenes de lanzamiento.(1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> ( 1.0.1 , 1 ) -> (1.0.1, 2)
CFBundleShortVersionString es el "nombre" público de la versión (ejemplo: "2.5" o "3.8.1"). Debes aumentarla en cada lanzamiento .
CFBundleVersion es el número de compilación privado. No se ve en la AppStore. Debes aumentarla en cada subida . Significa que si alguna vez rechaza un binario antes de que se conecte, y desea cargar un nuevo binario, tendrá el mismo CFBundleShortVersionString pero debe tener un CFBundleVersion más alto (ejemplo: public "2.5", private "2.5", y luego rechazo binario, y volver a cargar privado "2.5.1")
Edición el 16 de noviembre de 2016:
/ ! / La propiedad CFBundleVersion también se usa (junto con CFBundleName ) en el encabezado User-Agent
enviado por NSURLConnection en su código.
Ejemplo: si CFBundleName es MyApp y CFBundleVersion es 2.21, entonces cualquier consulta HTTP programática enviada directamente por su código usando NSURLConnection incrustará el encabezado:
User-Agent: MyApp/2.21 CFNetwork/... Darwin/...
(Esto no se aplica a las solicitudes emitidas automáticamente por UIWebView).