Android即时应用程序:如何调试即时应用程序?

6

当我在Android Studio上调试我的即时应用程序时,调试器会附加到即时应用程序进程,并在大多数断点处暂停执行。但是,它似乎忽略了我的主活动的onCreate方法的断点。我尝试过“调试”和“附加调试器到Android进程”选项。我错过了什么吗?

2个回答

13

有关如何使用Android Studio调试器调试Android应用程序的基本信息,请参阅开发者文档:调试您的应用程序

调试即时应用程序时,Android Studio调试器通常正常工作大部分时间。但是,在运行Android N及以下版本的设备上,您会注意到调试器在应用程序生命周期早期(例如Application.onCreateActivity.onCreate)无法停留在断点处。

当即时应用程序正在运行时,它将在您的应用程序包名称下运行。但是,在应用程序启动期间有一个短暂的时间段,它将在以下格式的临时包名称下运行:

com.google.android.instantapps.supervisor.isolated[0-9]+

这个临时名称是由运行时分配的。因为Android Studio不知道这个名称,所以调试器将无法附加到该进程上。

解决方法是找到这个临时名称并使用adb设置应用程序进行调试。可以在运行应用程序之前在终端中运行以下命令来完成此操作。应用程序启动时,它将打印出名称。

=> adb shell 'while true; do ps | grep com.google.android.instantapps.supervisor.isolated; sleep 1; done'
u0_i6     31908 630   1121664 29888          0 00ea57eed4 R com.google.android.instantapps.supervisor.isolated15

一旦您确定了软件包名称,请使用以下命令,它将暂停并使您的即时应用程序进程等待调试器。 然后正常附加调试器,但通过单击“显示所有进程”选择临时进程名称在“选择进程”窗口中。

=> adb shell am set-debug-app -w --persistent com.google.android.instantapps.supervisor.isolated15

您可以通过调用adb shell am clear-debug-app来清除调试状态。 - ne'mi

0
我最近在调试即时应用程序时也遇到了问题,出现了多个日志消息。
在调试窗口中出现了“等待应用程序启动调试服务器”的消息,经过多次重试后出现了“无法连接到远程进程。终止调试会话”。
我解决这个问题的方法是使用Android studio的“运行”菜单中的“附加到进程”选项。

OP已经提到他尝试了“附加到进程”的选项,但没有帮助。 - Wander3r
对我来说,它一直很好用,稳定可靠。Android Studio 3.3。 - yasyd
我遇到了同样的问题,但不幸的是,这对我没有用,有关此事的任何更新吗? - nulldroid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接