Solución:
Puede validar desde la línea de comando usando el comando:
xcrun -sdk iphoneos Validation /path/to/App.{app or ipa}
No está claro qué comprobaciones realiza, pero presumiblemente lo hace al menos con la firma de código y las dimensiones de los iconos.
Además de la validación local, es posible realizar una validación en línea (pero solo para paquetes IPA):
xcrun -sdk iphoneos Validation -verbose -online /path/to/App.ipa
Para que esto funcione, necesita tener su iTunes Connect credenciales almacenadas en una entrada especial en su llavero. Para crear esta entrada:
- Abre el Acceso al llavero solicitud;
- Cree un nuevo elemento de contraseña (Expediente > Nuevo elemento de contraseña …)
- Nombre del artículo del llavero:
Xcode:itunesconnect.apple.com
- Nombre de cuenta / contraseña: sus credenciales para iTunes Connect
La validación en línea parece ser bastante tosca, pero todas las verificaciones que de otro modo se realizarían validando un archivo con la ventana del Organizador en Xcode. Lamentablemente, no parece establecer un código de salida distinto de cero en caso de falla, lo que significa raspado de salida para detectar errores. Mi heurística actual para detectar fallas es la presencia de cualquier salida después de la Performing online validation...
línea.
Dada la falta de documentación, es casi seguro que no es compatible.
En el pasado he usado este comando:
xcrun -sdk iphoneos Validation /path/to/MyApp.app or /path/to/MyApp.ipa
Esto comprobará la firma del código, las dimensiones del icono, etc. No estoy seguro de si la aplicación Xcode Organizer o Application Loader realiza alguna otra validación además de esta herramienta, y la herramienta en sí no tiene indicadores de ayuda o de línea de comandos que pueda encontrar.
ACTUALIZAR:
Esta pregunta me ha llevado a profundizar un poco más. Ejecutando el strings
herramienta revela los siguientes interruptores:
-verbose
-upload
-warnings
-errors
-online
los -online
La opción aparentemente validará el binario para la primera aplicación disponible en iTunes Connect, pero no he descubierto cómo pasar un nombre de usuario / contraseña al comando. Sin embargo, supongo que para la integración continua probablemente solo desee la validación local.
Si solo desea validar el archivo ipa firmado, existe una herramienta para hacerlo altool
$ /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -h
Copyright (c) 2009-2015, Apple Inc. Version 1.1
Usage: altool --validate-app -f file -t platform -u username [-p password]
altool --upload-app -f file -t platform -u username -p password
-f, --file Filename.
-t, --type Type/Platform: osx, ios.
-u, --username Username. Required to connect for validation and upload.
-p, --password Password. Required if username specified. Password is read from stdin if one is not supplied.
May use @keychain: or @env: prefixes followed by the keychain or environment variable lookup name.
e.g. -p @env:SECRET which would use the value in the SECRET environment variable.
-v, --validate-app Validate an app archive. The username, password, and file path to app archive are required.
--upload-app Uploads the given app archive. The username, password, and file path to app archive are required.
--output-format [xml | normal] 'xml' displays error output in a structured format; 'normal' outputs in an unstructured format (default)
-h, --help Display this output.
Por ej.
/Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Support/altool -v -f APP.ipa -u [email protected] -p password