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