当我的Android应用程序已经运行并且我更改了代码时,我得到“Hot Code Replace Failed”对话框。
如果我希望Eclipse在遇到设备时更新设备上的代码,我想知道正确的响应是什么(终止或断开)。
终止和断开有什么区别?
此外,我想知道是否单击“不支持热代码替换时不显示错误”,Eclipse将来会发生什么情况?
答案 0 :(得分:13)
根据所使用的VM(在本例中为Dalvik),可以在调试时进行一些代码更改,以便“热部署”或“热替换”。这意味着代码更改将立即在模拟器上生效,您可以测试它们而无需重新部署应用程序。在使用可能需要10分钟构建和部署的企业应用程序时,这种热重新部署更常用,因此在开发过程中浪费了大量时间。
HotSpot VM(通常在PC上使用的VM)只允许简单的代码替换,如果您尝试添加/重命名字段成员或方法,则会失败。我不确定Dalvik VM提供了什么样的支持,但是如果你进行了更改它不支持你就会得到那个对话框。
现在,关于按钮:
如果选中此框,它将始终为“继续”。
答案 1 :(得分:5)
如果我希望Eclipse在遇到设备时更新设备上的代码,我想知道正确的响应是什么(终止或断开连接)。
当遇到此对话框时,没有直接的方法让Eclipse在模拟器上更新正在运行的代码,因为Dalvik VM不支持热交换,即更新正在运行的代码。您必须手动将应用程序重新部署到模拟器中。
终止和断开有什么区别?
终止将终止正在仿真器/设备上调试的应用程序。
断开连接只会断开调试器的连接,让应用程序在模拟器/设备上运行。
另外,我想知道是否单击“不支持热代码替换时不显示错误”,Eclipse将来会发生什么情况?
当“不支持热代码替换”时“它不会显示错误”显然;) - 即它不会警告您,您所做的任何更改都不会热交换到正在运行的应用程序中(因为Dalvik VM不支持像Oracle的JVM那样的热交换。)
答案 2 :(得分:0)
我通常使用更改的代码终止然后重新发布我的应用程序。