2012-07-09 15 views
8

Estoy trabajando en intentar lanzar una solución de prueba automatizada para algunas aplicaciones de iOS. Estoy usando fruitstrap para transferir e instalar una aplicación compilada en el iPhone conectado, pero estoy luchando por encontrar una forma de iniciar automáticamente la aplicación una vez que se haya completado la instalación.Inicie la aplicación instalada en el iPhone atado

Fruitstrap tiene una opción para ejecutar la aplicación en el depurador GDB, que funciona. Desafortunadamente, hay algunos casos de prueba que requerirán que la aplicación se ejecute sin el depurador adjunto (manejo especial de fallas). Pasé mucho tiempo confundiendo los recursos disponibles en MobileDevice Library, que es lo que usa Fruitstrap, pero no he podido activar nada al iniciar una aplicación.

¿Alguna idea?

+0

¿Este dispositivo está jailbroken, o puede jailbreak para resolver este problema? ¿Y puede usar la comunicación Wifi, o está limitado solo a la comunicación por cable USB? – Nate

+0

El dispositivo no puede ser jailbroken. Wifi es una opción, pero no preferida. – BlueVoid

Respuesta

2

La creación de un programa de arranque y el uso de esquemas de URL puede ser una opción para algunas personas, y ciertamente debe tenerse en cuenta, pero no se ajusta a mis requisitos.

Lo que terminé haciendo fue lanzar la aplicación con el depurador a través de fruitstrap. Me fruitstrap incluir los siguientes comandos de preparación (En las GDB_PREP_CMDS definen) recompilarse:

handle all noprint pass nostop 
continue 

El mango pasará la señal en el programa por lo que el manejador de la señal medida (manejador de fallos en este caso) se encargará de la señal. El continuar era algo que necesitaba para que la aplicación se ejecutara una vez que el depurador comenzara.

Hay una falla desafortunada en esto, que desafortunadamente no conozco una solución alternativa. La versión ARM7 de GDB no tiene el comando 'set dont_handle_bad_access' como lo hace la versión de darwin. Por alguna razón, pasar señales EXC_BAD_ACCESS al programa no funciona y la aplicación se cuelga. Esto es significativo ya que esta es la señal para la mayoría de los bloqueos. Pero tal como está ahora, es lo mejor que puedo hacer, y al menos se trata de excepciones no detectadas.

1

Creo que puede estar buscando algún tipo de esquema de URL personalizado.

Tenga una mirada en el siguiente documento y vaya a: Implementación URL personalizada Esquemas

http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

También puede google URL Schemes en IOS para ver si se encuentra con algo similar a lo que está intentando hacer.

Avísame si esto te ayudó. Sería interesante escuchar si tuviste algún éxito.

Saludos.

+0

Los URLSchemes son una idea inteligente, pero no estoy seguro de que sea una solución viable para mí. Necesito poder iniciar la aplicación directamente desde la computadora a la que está conectado el dispositivo, y creo que los URLSchemes solo funcionan desde otras aplicaciones en el dispositivo. – BlueVoid

2

Puede hacer lo que quiera utilizando fruitstrap o Xcode para iniciar un programa "bootstrap" que hace que su aplicación de destino se ejecute a través de una URL personalizada como la describe Michael.

Mientras que el programa de arranque se ejecuta bajo el depurador, el programa invocado por URL se ejecutará normalmente.

+0

Si bien es una idea que vale la pena, desafortunadamente no es una opción para mí. No puedo modificar el origen de la aplicación que se lanzará para incluir el controlador de URL. Además, instalar demasiado el programa de arranque junto con la aplicación que se va a probar es demasiado elevado. – BlueVoid

Cuestiones relacionadas