当我在 Android Studio 上调试即时应用程序时,调试器会附加到即时应用程序进程并在大多数断点处暂停执行。但是,它似乎忽略了我主要活动的 onCreate 方法的断点。我试过“调试”和“将调试器附加到 Android 进程”选项。我错过了什么?
2 回答
有关如何使用 Android Studio 调试器调试 Android 应用程序的基本信息,请参阅开发者文档调试您的应用程序 。
Android Studio 调试器在调试免安装应用时大部分时间都能正常工作。但是,您会注意到,在运行 Android N 及更低版本的设备上,调试器将无法在应用生命周期早期的断点处停止(例如Application.onCreate
或)。Activity.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
我最近在调试即时应用程序时也遇到了问题。带有多个日志消息
“等待应用程序启动调试服务器”
在调试窗口中并经过多次重试
“无法连接到远程进程。正在中止调试会话。”
我解决问题的方法是使用Android Studio “运行”菜单中的“附加到进程”选项。