4

當我在Android Studio上調試我的即時應用程序時,調試器會附加到即時應用程序進程並在大多數斷點處暫停執行。然而它似乎忽略了我主要活動的onCreate方法的斷點。我試過「調試」和「附加調試器到Android進程」選項。我錯過了什麼?Android即時應用:如何調試即時應用?

回答

9

有關如何使用Android Studio調試器調試Android應用程序的基本信息,請參閱Developer Documentation Debug Your App

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 
+0

我現在運行命令我該如何恢復? – virengujariya

+0

您可以通過調用adb shell清除debug狀態clear-debug-app –