2011-09-16 10 views
7

Cuando mi aplicación para Android ya se está ejecutando y cambio el código, aparece el cuadro de diálogo "Falló la sustitución del código de acceso".Android: ¿Cómo debo responder al diálogo "Reemplazar código caliente fallido" en Eclipse?

  1. Me pregunto cuál es la respuesta correcta es (por terminada o desconexión) si quiero Eclipse para actualizar mi código en el dispositivo cuando lo encuentro.

  2. ¿Cuál es la diferencia entre terminar y desconectar?

  3. Además, me pregunto si hago clic en el mensaje "No mostrar el error cuando no se admite la sustitución del código de acceso rápido", ¿qué hará Eclipse en el futuro cuando ocurra este escenario?

"Hot Code Replace Failed" dialog

+0

¿Estaba depurando en ese momento? También he encontrado este mensaje, pero solo cuando he estado depurando algo y alteré código por error y no detuve el depurador. No fue un problema para mí, ya que acabo de reconstruir y poner en el emulador. Supongo que el reemplazo de Hot Code no está disponible. ¿Realmente necesitas esa instalación? – Kerry

Respuesta

13

Dependiendo de la máquina virtual utilizada (Dalvik en este caso), se pueden realizar algunos cambios de código durante la depuración que se 'implementará en caliente' o 'reemplazará en caliente'. Esto significa que los cambios de código tendrán efecto de inmediato en el emulador y podrá probarlos sin la necesidad de volver a implementar su aplicación. Este tipo de redistribución en caliente se usa con más frecuencia cuando se trabaja con aplicaciones empresariales que pueden tardar 10 minutos en compilarse e implementarse, por lo que se desperdicia mucho tiempo durante el desarrollo.

El HotSpot VM (el VM usualmente utilizado en PC) permite solo el reemplazo de código simple y falla si intenta agregar/cambiar el nombre de un miembro o método de campo. No estoy seguro de qué tipo de soporte ofrece Dalvik VM, pero si realiza un cambio no es compatible, obtendrá ese cuadro de diálogo.

Ahora, en cuanto a los botones:

  • Continuar: Aceptar que los cambios realizados no tendrán efecto inmediato en el emulador y continuar la depuración
  • terminará: Mata a la aplicación
  • Desconectar: No mate la aplicación, pero finalice la sesión de depuración (es decir, desconecte el depurador)

Si marca la casilla, siempre continuará.

+3

Terminar ** ** no matará al * emulador *, solo se eliminará la * aplicación *. –

+1

@Philipp Gracias, ha pasado un tiempo desde que hice el desarrollo de Android. Lo he corregido –

0

lo general terminará y no volver a publicar mi aplicación con el código modificado.

+0

Gracias Jack-También estaba preguntando, me pregunto si hago clic en el mensaje "No mostrar el error cuando no se admite la sustitución del código de acceso rápido", ¿qué hará Eclipse en el futuro cuando ocurra este escenario? –

+0

"No se mostrará el error cuando no se admite el reemplazo de código caliente", obviamente;) –

+1

Simplemente no mostrará el error, y los cambios no se presionarán hasta que los presione. Por lo tanto, si su programa se ejecuta en AVD y realiza cambios de código, debe "ejecutarlo" nuevamente para enviar una nueva versión. – Jack

5

Me pregunto cuál es la respuesta correcta (terminar o desconectar) si deseo que Eclipse actualice mi código en el dispositivo cuando lo encuentro.

No hay manera directa a tener actualización de Eclipse el código que se ejecuta en el emulador cuando se encuentra con este cuadro de diálogo que la máquina virtual Dalvik no suppot intercambio en caliente, es decir, la actualización de la ejecución de código. Tendrás que volver a implementar la aplicación en tu emulador de forma manual.

¿Cuál es la diferencia entre terminar y desconectar?

  • Terminar terminará la aplicación que se está depurando en el emulador/dispositivo.

  • Disconnect desconectará el depurador y dejará la aplicación ejecutándose en el emulador/dispositivo.

Además, me pregunto si hago clic en el "No mostrar de error cuando el código caliente replace no es compatible", lo que Eclipse se puede hacer en el futuro, cuando se produce esta situación?

Es "no mostrará el error cuando el código caliente replace no es compatible", obviamente;) - es decir, no usted y los cambios que no se puede intercambiar en caliente a la aplicación en ejecución advertirá (porque la máquina virtual de Dalvik no es compatible con el intercambio en caliente como la JVM de Oracle, por ejemplo).

Cuestiones relacionadas