Xcode 3.2 proporciona una nueva característica impresionante en el menú Generar, "Generar y archivar" que genera un archivo .ipa adecuado para la distribución Ad Hoc. También puede abrir el Organizador, ir a "Aplicaciones archivadas" y "Enviar solicitud a iTunesConnect".
¿Hay alguna manera de usar "Build and Archive" desde la línea de comandos (como parte de un script de compilación)? Supongo que xcodebuild
estaría involucrado de alguna manera, pero la man
página no parece decir nada sobre esto.
ACTUALIZACIÓN Michael Grinich solicitó una aclaración; esto es exactamente lo que no puede hacer con las compilaciones de línea de comandos, características que SOLO puede hacer con el Organizador de Xcode después de "Construir y Archivar".
- Puede hacer clic en "Compartir aplicación ..." para compartir su IPA con beta testers. Como Guillaume señala a continuación, debido a la magia de Xcode, este archivo IPA no requiere un archivo .mobileprovision distribuido por separado que los probadores beta deben instalar; Eso es mágico. Ningún script de línea de comandos puede hacerlo. Por ejemplo, el script de Arrix (enviado el 1 de mayo) no cumple con ese requisito.
- Más importante aún, después de que haya probado beta una compilación, puede hacer clic en "Enviar aplicación a iTunes Connect" para enviar esa misma compilación EXACTAMENTE a Apple, el binario que probó, sin reconstruirla. Eso es imposible desde la línea de comandos, porque firmar la aplicación es parte del proceso de compilación; puede firmar bits para la prueba beta Ad Hoc O puede firmarlos para enviarlos a la App Store, pero no ambos. Ningún IPA integrado en la línea de comandos puede probarse en versión beta en teléfonos y luego enviarse directamente a Apple.
Me encantaría que alguien viniera y demuestre que estoy equivocado: ambas características funcionan muy bien en la GUI de Xcode y no se pueden replicar desde la línea de comandos.
fuente
xcodebuild
. Crear un archivo IPA solo implica colocar la aplicación en un directorio llamado "Carga útil", comprimir ese directorio y cambiarle el nombre a MyAppName.ipa.Respuestas:
Encontré cómo automatizar el proceso de compilación y archivo desde la línea de comando, acabo de escribir un artículo de blog explicando cómo puedes lograrlo.
El comando que debes usar es
xcrun
:Encontrarás todos los detalles en el artículo . Si tiene alguna pregunta, no dude en preguntar.
fuente
RELEASE_BUILDDIR
necesita ser un camino absoluto.-o "${ipa_path}"
debe ser una ruta absoluta. De lo contrario, probablemente obtendráerror: Unable to create '.../...ipa'
o se ignorará silenciosamente la creación. Maldición, me desperdició un par de horas.Con Xcode 4.2 puede usar el indicador -scheme para hacer esto:
Después de este comando, el Archivo aparecerá en el Xcode Organizer.
fuente
archive
acción no respeta ninguna configuración que proporcione a través de esta invocación, aparte del espacio de trabajo y el esquema, ¡esto me ha costado horas !xcode-select <path to Xcode.app>
-scheme <SchemeName>
"Archivo
Exportación IPA ( tenga en cuenta la opción de exportación plist )
Para aquellos que no conocen exportOptions.plist, https://blog.bitrise.io/new-export-options-plist-in-xcode-9
Aquellos que estaban usando esto para construir proyectos en herramientas de CI / CD como teamcity / jenkins, asegúrese de estar usando el xcode correcto instalado en el agente de compilación para archivar y exportar.
Puede usar cualquiera de las siguientes 2 opciones para esto.
Aquí hay un script de línea de comando para crear un archivo y un ejemplo de IPA. Tengo un proyecto de iPhone xcode, que se encuentra en la carpeta Desktop / MyiOSApp.
Ejecute los siguientes comandos uno por uno:
Esto se ha probado con Xcode 5 y funciona bien para mí.
fuente
xcodebuild -workspace <ProjectName>/<ProjectName>.xcworkspace -scheme <schemeName> clean archive -configuration release -sdk iphoneos -archivePath <ProjectName>.xcarchive
está arrojando error:requires a provisioning profile with the Associated Domains feature. Select a provisioning profile for the "Release" build configuration in the project editor.
He estado usando mi propio script de compilación para generar el paquete ipa para la distribución ad hoc.
El script también incrementa el número de versión. Puede eliminar esa parte si no es necesaria. Espero eso ayude.
fuente
La
xcodebuild
herramienta puede compilar y exportar productos de archivo con el indicador -exportArchive (a partir de Xcode 5). Anteriormente, el paso de exportación solo era posible a través de la interfaz de usuario de Xcode Organizer.Primero archiva tu aplicación:
Dada
$ARCHIVE_PATH
(la ruta al archivo .xcarchive ), exporte la aplicación desde el archivo con uno de los siguientes:Archivo .ipa de iOS :
Archivo .app de Mac :
En ambos comandos, los argumentos -exportProvisioningProfile y -exportSigningIdentity son opcionales.
man xcodebuild
para detalles sobre la semántica. En estos ejemplos, el perfil de aprovisionamiento para la compilación de iOS especificaba un perfil de aprovisionamiento de distribución AdHoc, y la identidad de firma para la aplicación Mac especificaba un ID de desarrollador para exportarlo como una aplicación de terceros (es decir, no distribuido a través de Mac App Store).fuente
-workspace
opción a xcodebuild (y una ruta a un espacio de trabajo)?man xcodebuild
declara: "Para construir un espacio de trabajo de Xcode, debe pasar las opciones -workspace y -scheme para definir la construcción".Desarrollamos una aplicación para iPad con XCode 4.2.1 y queríamos integrar la compilación en nuestra integración continua (Jenkins) para la distribución de OTA. Aquí está la solución que se me ocurrió:
Luego, Jenkins carga los archivos ipa, plist y html en nuestro servidor web.
Esta es la plantilla de plist:
Para configurar esto, debe importar el certificado de distribución y el perfil de aprovisionamiento en el llavero del usuario designado.
fuente
$WORKSPACE
lugar de$PWD
generarAPP_PATH
Encontré algunas de las otras respuestas aquí difíciles de poner en marcha. Este artículo lo hizo para mí. Algunos caminos pueden necesitar ser absolutos, como se menciona en las otras respuestas.
El comando:
fuente
PUEDE realmente renunciar a una compilación, tal como lo hace XCode, para que pueda probar y enviar el mismo binario. Por ejemplo, en mi script (similar a los anteriores) construyo mi versión de lanzamiento firmada como una compilación AdHoc, luego la archivo como IPA para probar, luego renuncio con mi certificado de distribución y creo un archivo zip, que es lo que envío a Manzana. La línea relevante es:
fuente
Para Xcode 7 , tiene una solución mucho más simple. El único trabajo adicional es que debe crear un archivo plist de configuración para exportar el archivo.
(En comparación con Xcode 6, en los resultados de
xcrun xcodebuild -help
,-exportFormat
y las-exportProvisioningProfile
opciones ya no se mencionan; la primera se elimina y la segunda se reemplaza por-exportOptionsPlist
).Paso 1 , cambie el directorio a la carpeta incluyendo .xcodeproject o .xcworkspace file.
Paso 2 , usa Xcode o
/usr/libexec/PlistBuddy exportOptions.plist
para crear opciones de exportación de archivos plist. Por cierto,xcrun xcodebuild -help
le dirá qué claves debe insertar en el archivo plist.Paso 3 , cree el archivo .xcarchive (carpeta, de hecho) de la siguiente manera (la compilación / directorio será creado automáticamente por Xcode en este momento),
Paso 4 , exporte como un archivo .ipa como este, que difiere de Xcode6
Ahora, obtienes un archivo ipa en el directorio build /. Simplemente envíelo a la App Store de Apple.
Por cierto, el archivo ipa creado por Xcode 7 es mucho más grande que Xcode 6.
fuente
-scheme
y-configuration
opciones especifican cómo firmar el archivo IPA.He dado una breve descripción de los pasos a seguir y los parámetros que se deben pasar al generar un ipa usando terrminal a continuación:
Vaya a la carpeta que contiene el archivo MyApp.xcodeproject en la terminal
Al usar el comando que se proporciona a continuación, obtendrá todos los objetivos de la aplicación
Después de ejecutar el comando anterior, obtendrá una lista de objetivos de los cuales debe seleccionar un objetivo específico que necesita generar .ipa
El comando anterior crea el proyecto y crea un archivo .app. La ruta para ubicar el archivo .app es
./build/Release-iphoneos/MyApp.app
Después de que Build tenga éxito, ejecute el siguiente comando para generar .ipa de la aplicación usando el Nombre del desarrollador y el Perfil de aprovisionamiento usando la sintaxis a continuación:
Explicación de cada parámetro en la sintaxis anterior:
fuente
Xcode 8:
Formato de IPA:
Exporta el archivo MyMobileApp.xcarchive como un archivo IPA a la ruta MyMobileApp.ipa utilizando el perfil de aprovisionamiento MyMobileApp Distribution Profile.
Formato de la APLICACIÓN:
Exporta el archivo MyMacApp.xcarchive como un archivo PKG a la ruta MyMacApp.pkg utilizando la aplicación de aplicación identidad de firma de cationes ID de desarrollador Aplicación: Mi equipo. La identidad de firma del instalador. ID del desarrollador Instalador: Mi equipo se usa implícitamente para firmar el paquete exportado.
Página de manual de Xcodebuild
fuente
Vaya a la carpeta donde está la raíz de su proyecto y:
fuente
¡Avanza un paso más y sube a iTunesConnect a través de la línea de comandos con Xcode 7 ! (Suponiendo que está comenzando con un
.ipa
que se ha firmado con el perfil de lanzamiento y la identidad de firma correctos).Ingrese
altool
, la interfaz CLI para Application Loader (docs
, página 38). Oculto en la estructura de Xcode.app, es una función útil que nos permite subir directamente a ItunesConnect.Simplemente ejecute
$ altool --upload-app -f file -u username [-p password]
para cargar su recién acuñado.ipa
directamente a Apple. La contraseña es opcional y se la solicitará si la deja fuera del comando.Si hay algún problema con la aplicación durante el paso de verificación, la consola los imprimirá.
Es probable que tenga que exportar la ruta a
altool
si no desea guardar su ubicación.¡Eso es! Simplemente inicie sesión en iTunesConnect.com y seleccione su nueva compilación para probar con testflight.
Nota final: si recibe un mensaje de error
Exception while launching iTunesTransporter: Transporter not found at path: /usr/local/itms/bin/iTMSTransporter. You should reinstall the application
, puede seguir la sugerencia de esta respuesta SO , para ejecutar un enlace simbólico a la ubicación correcta:fuente
Mejorando la respuesta de Vincent, escribí un script para hacerlo: le
xcodearchive
permite archivar (generar un ipa) su proyecto a través de la línea de comando. Piense en ello como la hermana del
xcodebuild
comando, pero para archivar.El código está disponible en github: http://github.com/gcerquant/xcodearchive
Una opción del script es habilitar el archivado de los símbolos dSYM en un archivo con marca de tiempo. No hay excusa para no mantener más los símbolos y no ser capaz de simbolizar el registro de bloqueo que pueda recibir más tarde.
fuente
¿Cómo construir un proyecto iOS con comando?
&&
&&
¿Qué es ExportOptions.plist?
ExportOptions.plist es obligatorio en Xcode. Le permite especificar algunas opciones cuando crea un archivo ipa. Puede seleccionar las opciones en una interfaz de usuario amigable cuando usa Xcode para archivar su aplicación.
Importante : El método de lanzamiento y desarrollo es diferente en ExportOptions.plist
AppStore:
Desarrollo
fuente
pruebe xctool, es un reemplazo para xcodebuild de Apple que hace que sea más fácil construir y probar productos iOS y Mac. Es especialmente útil para la integración continua. Tiene algunas características adicionales:
No.3 es extremadamente útil. No sé si alguien puede leer la salida de consola de xcodebuild, no puedo, por lo general, me dio una línea con más de 5000 caracteres. Aún más difícil de leer que un trabajo de tesis.
xctool: https://github.com/facebook/xctool
fuente
si usa la siguiente herramienta: https://github.com/nomad/shenzhen
entonces esta tarea es muy fácil:
fuente
fuente
Después de actualizar a Xcode 8, descubrí que la ipa empresarial se genera por
Así que me cambio
xcodebuild -exportArchive
y todo volvió a la normalidad.fuente
¿Te refieres a las opciones de validación / compartir / enviar? Creo que son específicos de Xcode y no son adecuados para una herramienta de construcción de línea de comandos.
Con algo de inteligencia, apuesto a que podrías hacer un guión que lo haga por ti. Parece que solo están almacenados
~/Library/MobileDevice/Archived Applications/
con un UUDI y un plist. No puedo imaginar que sea tan difícil hacer ingeniería inversa en el validador tampoco.El proceso que estoy interesado en automatizar es enviar compilaciones a probadores beta. (Dado que el envío de la App Store ocurre con poca frecuencia, no me importa hacerlo manualmente, especialmente porque a menudo necesito agregar un nuevo texto descriptivo). Al hacer un pseudo Build + Archive usando la CLI de Xcode, puedo activar compilaciones automáticas de cada confirmación de código, cree archivos IPA con perfiles de aprovisionamiento integrados y envíelos por correo electrónico a los evaluadores.
fuente
xcodebuild
y crea un IPA.