Android: Как мне ответить на диалог «Hot Code Replace Failed» в Eclipse?

Когда мое приложение Android уже запущено, и я меняю код, я получаю диалоговое окно «Hot Code Replace Failed».

  1. Мне интересно, какой правильный ответ (прекратить или отключить), если я хочу, чтобы Eclipse обновил мой код на устройстве, когда я столкнулся с ним.

  2. В чем разница между завершением и отключением?

  3. Кроме того, мне интересно, нажимаю ли я кнопку «Не показывать ошибку, если замена горячего кода не поддерживается», что будет делать Eclipse в будущем при возникновении этого сценария?

Диалоговое окно «Сменить код с ошибкой»

В зависимости от используемой виртуальной машины (Dalvik в этом случае), некоторые изменения кода могут быть сделаны во время отладки, которая будет «горячим развертыванием» или «горячей заменой». Это означает, что изменения кода немедленно вступят в силу для эмулятора, и вы можете протестировать их без необходимости повторного развертывания приложения. Такое горячее повторное развертывание чаще используется при работе с корпоративными приложениями, которые могут занять 10 минут, чтобы строить и развертывать, и поэтому тратит много времени на разработку.

Виртуальная виртуальная машина HotSpot (виртуальная машина, обычно используемая на ПК) допускает только простую замену кода и сбой, если вы пытаетесь добавить / переименовать элемент или метод поля. Я не уверен, какую поддержку предлагает Dalvik VM, но если вы внесете изменения, это не поможет, вы получите это диалоговое окно.

Теперь, что касается кнопок:

  • Продолжить: Примите, что сделанные вами изменения не сразу вступят в силу в эмуляторе и продолжите отладку
  • Завершить: убить приложение
  • Отключить: не убивайте приложение, а завершайте сеанс отладки (т.е. отключите отладчик)

Если вы установите флажок, он всегда будет продолжать.

Мне интересно, какой правильный ответ (прекратить или отключить), если я хочу, чтобы Eclipse обновил мой код на устройстве, когда я столкнулся с ним.

Нет прямого способа, чтобы Eclipse обновлял ваш текущий код в эмуляторе, когда вы сталкиваетесь с этим диалогом, поскольку VM Dalvik не поддерживает горячую замену, то есть обновление текущего кода. Вам придется вручную перенастроить приложение на ваш эмулятор.

В чем разница между завершением и отключением?

  • Terminate завершает отладку приложения на эмуляторе / устройстве.

  • Disconnect просто отключит отладчик и оставьте приложение запущенным на эмуляторе / устройстве.

Кроме того, мне интересно, нажимаю ли я кнопку «Не показывать ошибку, если замена горячего кода не поддерживается», что будет делать Eclipse в будущем при возникновении этого сценария?

Он «не будет показывать ошибку, если замена« горячего »кода не поддерживается», очевидно:), то есть она не будет предупреждать вас, и любые изменения, которые вы сделаете, не будут подвергнуты горячей замене в запущенном приложении (потому что Dalvik VM не Поддержка горячей замены, например, JVM Oracle).

Обычно я завершаю, а затем повторно публикую свое приложение с измененным кодом.