2012-06-26 26 views
9

¿Cómo se depura el javascript en Xcode?iOS PhoneGap debug Workflow

Una cosa que puedo hacer es abrir la página en el navegador OS X Chrome, pero, naturalmente, esto no funcionará para el flujo de aplicaciones que involucre código nativo. ¿Hay algún truco inteligente de Xcode que me falta?

+0

Lo único que se me ocurre es enviar mensajes de registro desde Javascript a través de Phonegap a la consola de Xcode. Aparte de esto, no creo que haya otra forma de depurar Javascript en el dispositivo. – nhahtdh

+0

Sí, console.log es tu amigo :-). Usar Chrome es la mejor opción para que JS funcione y luego agregar la funcionalidad nativa – codemonkey

+0

Apple agregó recientemente la eliminación remota de dispositivos móviles al inspector web de Safari. Este es un gran paso adelante en la depuración de las aplicaciones iOS PhoneGap. (ver mi respuesta a continuación) –

Respuesta

1

Intenta usar Weinre, es una herramienta muy buena para depurar aplicaciones de JavaScript en dispositivos móviles.

http://people.apache.org/~pmuellr/weinre/docs/latest/

pesar de que todavía no será capaz de depurar el guión paso a paso, ya que da en el escritorio, pero da mucho más detalle que Xcode (~ JavaScript).

16

Con el lanzamiento de iOS 6, Apple lanzó el Web Inspector remoto para su Mobile Safari junto con Mac Safari 6, y esto es enorme. Básicamente, tiene todas las funciones y el poder de Web Inspector en Safari habitual, para sus aplicaciones móviles, incluidas las aplicaciones Phonegap. He usado weinre y esto lo hace obsoleto para versiones más nuevas de iOS (pero no para versiones anteriores de iOS, dispositivos que no son iOS, como Android, o si estás en Windows).

Así es como funciona (requiere un Mac, ya sea xCode 4.5+ funcionamiento de un simulador de iOS 6 + 6 + o un dispositivo iOS y Safari 6 en su Mac):

en su simulador de iOS o dispositivo iOS , abrir configuración -> Safari -> Avanzado -> Web Inspector -> (activar). (Esto está activado por defecto en el simulador, pero merece la pena comprobarlo)

En Safari, después de iniciar la aplicación phoneGap/cordova y ejecutar & en ejecución, acceda a iPhone Simulator o a su dispositivo desde el menú Desarrollo. Puede habilitar el menú de Desarrollo en las Preferencias Avanzadas de Safari, si aún no lo está.

Más discusión en la parte inferior de: http://www.mobilexweb.com/blog/iphone-5-ios-6-html5-developers

(también, si usted lee acerca de una "interfaz privada secreta" en algún lugar, esto ya no funciona.)

+1

¿Cómo puedo depurar el proceso de carga? Cuando logro abrir el inspector, la aplicación ya está cargada, por lo que no hay posibilidad de establecer puntos de interrupción en el código de carga. ¿Alguna idea? – blurrcat

+1

@blurrcat Disculpa que estuve ausente por un tiempo. Lo que describes es una limitación, y también he tenido este desafío antes. Para mí, parece que dos cosas pudieron haber funcionado: pude agregar una alerta() antes de mi código de inicialización, que básicamente detuvo la ejecución hasta que hice clic en Aceptar. O agregando un contenedor setTimeout (...) alrededor de mi función de inicialización mientras estaba depurando. Espero que ayude –

+0

Sí alerta()! ¡Eres un genio! – blurrcat