Android:我应该如何回应Eclipse中的"Hot Code Replace Failed"对话框?

Jef*_*rod 7 eclipse debugging android

当我的Android应用程序已经运行并且我更改了代码时,我得到"Hot Code Replace Failed"对话框.

  1. 如果我希望Eclipse在我遇到它时更新设备上的代码,我想知道正确的响应是什么(终止或断开).

  2. 终止和断开有什么区别?

  3. 另外,我想知道如果单击"不支持热代码替换时不显示错误",Eclipse将来会发生什么情况?

Gya*_*uyn 13

根据所使用的VM(在本例中为Dalvik),可以在调试时进行一些代码更改,即"热部署"或"热替换".这意味着代码更改将立即在模拟器上生效,您可以测试它们而无需重新部署应用程序.在使用可能需要10分钟构建和部署的企业应用程序时,这种热重新部署更常用,因此在开发过程中浪费了大量时间.

HotSpot VM(通常在PC上使用的VM)只允许简单的代码替换,如果您尝试添加/重命名字段成员或方法,则会失败.我不确定Dalvik VM提供什么样的支持,但是如果你进行了更改它不支持你将获得该对话框.

现在,至于按钮:

  • 继续:接受您所做的更改不会立即在模拟器中生效并继续调试
  • 终止:杀死应用程序
  • 断开连接:不要杀死应用程序但结束调试会话(即断开调试器)

如果选中该复选框,它将始终为"继续".

  • 终止将**不**杀死*模拟器*,只有*app*正在调试. (3认同)

Phi*_*art 5

如果我希望Eclipse在我遇到它时更新设备上的代码,我想知道正确的响应是什么(终止或断开).

当遇到此对话框时,没有直接的方法让Eclipse在模拟器上更新正在运行的代码,因为Dalvik VM不支持热交换,即更新正在运行的代码.您必须手动将应用程序重新部署到模拟器.

终止和断开有什么区别?

  • Terminate将终止在仿真器/设备上调试的应用程序.

  • 断开连接将断开调试器,并使应用程序在模拟器/设备上运行.

另外,我想知道如果单击"不支持热代码替换时不显示错误",Eclipse将来会发生什么情况?

它"在不支持热代码替换时不显示错误"显然;) - 即它不会警告您,您所做的任何更改都不会热交换到正在运行的应用程序中(因为Dalvik VM不会支持热插拔,例如Oracle的JVM).