Cómo generar un file .ipa desde la línea de command con la aplicación watchkit

Tengo una instancia de Jenkins que hace una compilation de lanzamiento usando xcodebuild. Luego tengo un script (en Jenkins) para crear el file .ipa usando xcrun. Esto funcionó bien para nosotros hasta ahora. Ahora tenemos una aplicación de watchkit y el file .ipa que se crea a partir de este process no es el mismo que el creado si haces una compilation de files y la exportamos desde Xcode.

La export de .ipa desde Xcode tiene una carpeta 'Carga útil', una carpeta 'Símbolos' (probablemente opcional) y una carpeta 'WatchKitSupport'. La ipa generada desde xcrun no tiene la carpeta 'Símbolos' o 'WatchKitSupport'. Vea más sobre la estructura aquí: https://stackoverflow.com/a/29400301/327386

Vi esta publicación en SO: https://stackoverflow.com/a/19856005/327386 que tiene commands para archivar y exportar la compilation .ipa (similar al process Xcode) pero incluso eso no creó las nuevas carpetas en cuestión .

¿Alguien sabe si hay una forma de usar las herramientas de línea de command para crear un file .ipa que sea equivalente al creado por Xcode? No encontré ningún documento oficial sobre esto

Problema exacto

xcodebuild -exportArchive no puede hacer IPA válido con Watch Extension, es un error de Apple ( http://openradar.appspot.com/20898925 ).

Solución oficial (Xcode 7)

Apple resolvió este problema en Xcode 7 con el indicador xcodebuild -exportArchive command xcodebuild -exportArchive . Puedes encontrar más detalles al respecto en este artículo .

Soluciones no oficiales (Xcode 6)

Hay soluciones para el problema. Si es urgente, puedes jugar con ellos, pero no pude encontrar una solución que funcionara para todos (según las discusiones en el foro).

  1. Adición de carpetas WatchKitSupport y Símbolos. Más detalles aquí y aquí . No estaba funcionando para mi
  2. Renunciar a toda la aplicación. Más detalles aquí . Es hacky, pero funciona mejor que la solución mencionada anteriormente.

Yo también tenía el mismo problema. La herramienta de línea de command exportArchive omite las carpetas de soporte de Watchkit requeridas mientras exporta el file a ipa. Intenté resolverlo usando el script de shell siguiente.

https://gist.github.com/phatblat/6eb8895e2202f796960e

Puede llamar al shellscript anterior desde su compilation Jenkins como a continuación.

 <exec executable="/bin/bash" failonerror="true"> <arg value="${root.dir}/buildscripts/package-ida.sh" /> <arg value="${build.dir}/APP_NAME.xcarchive" /> <arg value="${build.dir}/APP_NAME.ipa" /> </exec> 

Ahora podrá ver la carpeta de soporte WatchKit en su carga útil ipa y la validation de la aplicación de su tienda también tendrá éxito usando la compilation Jenkins generada.