ios - para - submit app to app store
CFBundleVersion debe ser una lista separada por puntos de como máximo tres enteros no negativos(ADVERTENCIA ITMS-9000) (7)
Recibo esta advertencia cuando intento enviar mi aplicación:
ADVERTENCIA ITMS-9000: "Este paquete no es válido. El valor para la clave CFBundleVersion [3.3.9.2014.08.20] int el archivo info.plist debe ser una lista separada por períodos de como máximo tres enteros no negativos.
Esta es la primera vez que veo esto después de muchos envíos con ese formato de versión.
¿Se ha cambiado algo con respecto a CFBundleVersion?
Supongo que los tres no siempre estuvieron ahí? ¿O la manzana acaba de empezar a avisarnos al respecto?
De los documentos de Apple :
CFBundleVersion
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.
Editar:
Al parecer, CFBundleVersion se cambió como se puede ver here . Es una pena que necesite buscar en WayBackMachine algo así mientras que el "Historial de revisión de documentos" de Apple no dice nada al respecto.
Al parecer, CFBundleVersion se cambió como se puede ver here . Es una pena que necesite buscar en WayBackMachine algo así mientras que el "Historial de revisión de documentos" de Apple no dice nada al respecto.
Estaba recibiendo el mismo problema que-
Blockquote
ERROR ITMS-90058: "Este paquete no es válido. El valor de la clave CFBundleVersion [ms-08-23] en el archivo Info.plist debe ser una lista separada por períodos de como máximo tres enteros no negativos".
Blockquote
Allí, después de que fui y busqué con cada Plist de Framework de terceros y en las bibliotecas de SAP, encontré la versión Bundle como [ms-08-23] . Lo cambié a un formato de tres enteros no negativos, es decir , 3.0.0 , lo cambié en cada Framework de SAP - IT Worked .
Esto sucedió en un marco que estaba usando de Cocoapods, aquí es cómo lo arreglé:
Debe encontrar un CFBundleShortVersionString no estándar en el archivo info.plist. Busqué a través de todos ellos y encontré esto en uno de los repositorios:
<key>CFBundleShortVersionString</key>
<string>HEAD based on 1.0</string>
Se cambió a esto:
<key>CFBundleShortVersionString</key>
<string>1.0</string>
Y funcionó
Este método, creado por los desarrolladores de Cocoapods también funciona:
https://github.com/Jonge/Cocoapods-frameworks-version-number-fix
La mejor práctica recomendada es usar valores separados para CFBundleShortVersionString
y CFBundleVersion
- Máximo de 3 componentes para
CFBundleShortVersionString
(ej: 4.2.3) - Un número de compilación
CFBundleVersion
El CFBundleShortVersionString
es la versión que se muestra en la App Store. La CFBundleVersion
tendrá que cambiar para cada compilación que cargue.
Por ejemplo, si carga una nueva versión (4.2.3) para revisar en iTunesConnect y si se rechaza. Deberá volver a enviar una nueva compilación para el mismo número de versión ( CFBundleShortVersionString
= 4.2.3) con un valor diferente de CFBundleVersion
Parece que Apple ha llevado esto un paso más allá e hizo de esto un error (no estoy seguro de cuándo sucedió esto, pero estoy usando Xcode 6). Si intenta enviar una solicitud con un CFBundleShortVersionString
con más de 2 puntos decimales, se producirá un error en el envío de un archivo a iTunes Connect.
Ahora debe tener un CFBundleShortVersionString
como 1.0
, 4.5.2
, etc. para enviar sus solicitudes con éxito. Podría ser un poco molesto, pero supongo que tiene sentido.
Si está utilizando CocoaPods
, agregue este script a Podfile
para manejar versiones de paquetes no numéricos:
# fix for non numeric CocoaPods versions
# https://github.com/CocoaPods/CocoaPods/issues/4421#issuecomment-151804311
post_install do |installer|
plist_buddy = "/usr/libexec/PlistBuddy"
installer.pods_project.targets.each do |target|
plist = "Pods/Target Support Files/#{target}/Info.plist"
original_version = `#{plist_buddy} -c "Print CFBundleShortVersionString" "#{plist}"`.strip
changed_version = original_version[/(/d+/.){1,2}(/d+)?/]
unless original_version == changed_version
puts "Fix version of Pod #{target}: #{original_version} => #{changed_version}"
`#{plist_buddy} -c "Set CFBundleShortVersionString #{changed_version}" "Pods/Target Support Files/#{target}/Info.plist"`
end
end
end
Ejemplo de salida para ReactiveCocoa 4:
Installing ReactiveCocoa (4.0.4-alpha-1)
(...)
Fix version of Pod ReactiveCocoa: 4.0.4-alpha-1 => 4.0.4
Siga el error, luego busque siguiendo la CFBundleVersion, en su búsqueda de caso: 3.3.9.2014.08.20 luego cámbielo a la versión correcta como 3.3.9 o 3.4.0, ... (debe ser mayor que la versión anterior)