lanzamiento de la aplicación iOS desde la console Mac OS X

para automatizar la testing de una aplicación, quiero lanzar repetidamente una aplicación de iOS con diferentes arguments a su function principal desde mi Mac; para simplificar, digamos que se necesita un file como argc y tengo 100 files que necesito para probar. En teoría, todo lo que quiero reproducir es el comportamiento de comstackr y ejecutar xcode en el dispositivo, no en jailbreak ; la aplicación está estrechamente relacionada con el hardware, por lo que el simulador por sí solo no será suficiente.

Hay un par de páginas que hacen algo similar, pero ninguna de ellas usa el dispositivo, y ninguna de ellas realmente explica cómo se vería realmente la línea de command en la console.

1) http://blog.carbonfive.com/2011/04/06/running-xcode-4-unit-tests-from-the-command-line/

esta página configura una testing de unidad que eventualmente se ejecuta en el simulador; él continúa para decir eso

La fase de compilation "Ejecutar script" de un objective de generación de testing de unidad solo ejecuta> "$ {SYSTEM_DEVELOPER_DIR} / Tools / RunUnitTests"

Verifiqué eso, pero ni RunPlatformUnitTests ni RunUnitTests se ejecutan desde Xcode 4 (cambié el nombre de las secuencias de commands para asegurarme).

2) http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/

esta página recoge donde 1) se fue, pero solo construye para el simulador y no especifica cómo se lanza realmente la aplicación. Describe bien cómo es build desde la línea de command.

3) Depuración de la aplicación de iOS construida desde la command-line

Lo que veo en Xcode 4 es la fase de compilation, que se detiene al firmar y validar la aplicación. Lo siguiente que veo es el depurador gdb que se ejecuta en el dispositivo. Sin embargo, no sé cómo acceder a debugserver: no he jailbreak mi iPhone, así que no tengo acceso a casi nada en él, ni debugserver ni la dirección IP.

Lo que puedo verificar es que gdb se llama desde xcode4 / platforms / iPhoneOS.platform, por lo que el depurador remoto debe adjuntarse a algo, de alguna manera …

Para la GDB remota de línea de command (o simplemente cargar en el dispositivo) puede usar esta pequeña herramienta, elija la horquilla más cercana a lo que necesita, el autor original ya no lo soportará: https://github.com/ghughes/fruitstrap

Es posible que no pueda usarlo tal cual (tuve que ajustar los parameters gdb para mi uso), pero es un buen comienzo.

Puede automatizar aún más las cosas ejecutando automáticamente este script

for i in $(system_profiler SPUSBDataType | grep "Serial Number: " | grep -Po "[A-Za-z0-9]{40,}$") ; do echo "Installing on: $i" #use fruitstrap with device $i end 

esto simplemente comprobará todo el puerto USB y mantendrá solo los que están actualmente conectados a un dispositivo iOS y devolverá su UDID.

Desde allí, podrá automatizar las testings con varios arguments diferentes para su aplicación.