Android: ¿Cómo debo responder al diálogo "Hot Code Replace Failed" en Eclipse?

Cuando mi aplicación Android ya se está ejecutando y cambio el código obtengo el cuadro de diálogo "Hot Code Replace Failed".

  1. Me pregunto cuál es la respuesta correcta (finalizar o desconectar) si quiero que Eclipse actualice mi código en el dispositivo cuando lo encuentre.

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

  3. Además, me pregunto si hago clic en el mensaje "No mostrar error cuando no se admite el reemplazo de código en caliente". ¿Qué hará Eclipse en el futuro cuando se produzca este escenario?

Cuadro de diálogo "Reemplazar código en caliente"

Dependiendo de la VM utilizada (Dalvik en este caso), algunos cambios de código pueden realizarse durante la depuración que se 'hot deploy' o 'hot replace'. Esto significa que los cambios de código tendrán efecto inmediatamente en el emulador y podrá probarlos sin necesidad de volver a implementar la aplicación. Este tipo de re-implementación en caliente se utiliza más comúnmente cuando se trabaja con aplicaciones empresariales que pueden tardar 10 minutos en generar y desplegar, por lo que se pierde mucho tiempo durante el desarrollo.

La VM HotSpot (la VM que se utiliza normalmente en las PC) sólo permite 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 de la VM Dalvik proporciona, pero si realiza un cambio que no es compatible, obtendrá ese cuadro de diálogo.

Ahora, en cuanto a los botones:

  • Continuar: Acepte que los cambios que ha realizado no surtirán efecto inmediatamente en el emulador y seguirá depurando
  • Terminar: eliminar la aplicación
  • Desconectar: ​​no destruya la aplicación, pero termine la sesión de depuración (es decir, desconecte el depurador)

Si marca la casilla, siempre continuará.

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

No hay manera directa de tener Eclipse actualizar su código en ejecución en el emulador cuando se encuentra este diálogo como la VM Dalvik no suppot hot swap, es decir, la actualización de código en ejecución. Tendrá que volver a implementar la aplicación en su emulador manualmente.

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

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

  • Desconectar sólo desconectará el depurador y dejará la aplicación en ejecución en el emulador / dispositivo.

Además, me pregunto si hago clic en el mensaje "No mostrar error cuando no se admite el reemplazo de código en caliente". ¿Qué hará Eclipse en el futuro cuando se produzca este escenario?

"No mostrará el error cuando el reemplazo de código en caliente no es compatible"; obviamente;) – es decir, no le avisará y cualquier cambio que haga no será intercambiado en caliente en la aplicación en ejecución (porque la VM Dalvik no Soporte hot-swapping como JVM de Oracle por ejemplo).

Normalmente termino y vuelvo a publicar mi aplicación con el código modificado.

  • El proyecto Biblioteca de Android no puede importar la clase R de otro proyecto de biblioteca al utilizar gradle para compilar en la línea de comandos
  • Tipo 'EGL_DEFAULT_DISPLAY' no se pudo resolver el error mientras que la constante está claramente definida
  • Cómo utilizar claves privadas desde el almacenamiento de Android
  • "Falta el componente de herramientas de plataforma de SDK!"
  • Icono de la pestaña de cambio de Android
  • Error fatal: Diseño no válido de java.lang.String en value
  • Descargar un sitio web a una cadena
  • ¿Cómo adjunto la fuente de la Biblioteca de soporte de Android en Eclipse?
  • Externalizar cadenas para el proyecto de Android
  • ¿Qué hacer al intentar crear una aplicación de Android, y 'No Target Available'?
  • Google map android api v2 falla en la aplicación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.