使用Android进行热插拔调试

时间:2012-05-03 10:36:17

标签: android debugging hotswap

1)在Android上启用热插拔调试是否需要特殊的设置/配置?

示例案例:

  • 在输入活动的onCreate方法后立即添加断点。
  • 在断点后动态添加新行(虚拟“if(1 == 1)return;”code)
  • 进入下一条指令 - >问题:我的调试器没有在这一行中断,而是跳到下一个让我相信新线路没有热交换到VM。

2)只有模拟器支持热插拔吗?是否还有支持它的手机?

4 个答案:

答案 0 :(得分:21)

每次构建Android项目时,它都是dexed并放入调试签名的apk中,该apk将发送到您的手机/模拟器。因此,hotswapping不是很容易做到的。

Hotswap是精心设计的JVM的产品,它可以交换类。在Android上,你有Dalvik VM,它目前不支持热交换。

我猜这个ADT团队在他们的名单上有这个高点。

编辑:尽管这个答案已经过了2。5年,但并未发生太大变化。然而,ZeroTurnaround已经填补了空白,而JRebel for Android应该为我们提供了一个非常需要的热交换方法。 http://zeroturnaround.com/software/jrebel-for-android/

EDIT2:随着Android Studio 2.0的发布,Instant Run可让您进行热插拔。热插拔即会在您的应用运行时更改课程。

他们还支持热插拔,在使用应用程序搞乱方面,这远远超过热插拔。热插拔仍会使您的应用运行。资源变化将触发热交换。

观看2015年Android Dev Summit的演讲,了解更多信息:https://www.youtube.com/watch?v=fs0eira2pRY

答案 1 :(得分:8)

Android Studio 2.0预览版推出了热插拔功能。您可以通过升级到:

来获得它
        classpath group: 'com.android.tools.build', name: 'gradle', version: '2.0.0-alpha1'

然后从菜单中设置:

enter image description here

答案 2 :(得分:5)

模拟器本身不支持代码热插拔,但使用InstaReloader等其他工具可以实现所需的操作。您可以免费使用此Android hotswapping tool

答案 3 :(得分:2)

并非真正热插拔,但Github上有一个模拟它的库。您可以在此处找到它:https://github.com/mmin18/LayoutCast

它有一些问题,但在撰写本答案时仍处于活跃状态。

此外,ZeroTurnaround似乎正在解决JRebel for Android的问题。您可以在此处请求访问权限:http://zeroturnaround.com/software/jrebel-for-android/