[Android] ADB로 현재 보이는 액티비티 확인
October 01, 2023
디버깅 목적으로, 현재 Top에 실행 중인 액티비티가 무엇인지 확인하고 싶을 때가 있는데요. ADB 명령어를 이용하여 확인할 수 있습니다. 어떤 명령어로 확인하는지 자세히 알아보겠습니다.
1. ADB로 현재 실행 중인 액티비티 찾기
리눅스나 MAC에서 다음과 같이 adb로 dumpsys 로그에서 현재 Top에 실행 중인 액티비티 이름을 찾을 수 있습니다.
- grep은 명령어의 출력 내용에서 특정 키워드로 검색되는 문자열 한줄을 찾는 명령어
adb shell dumpsys window windows
으로 모든 내용을 출력하고, 거기에서 mCurrentFocus, mFocusedApp, mObscuringWindow에 해당하는 내용을 찾아도 됨
adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp|mObscuringWindow'
예를 들어, Chrome을 실행한 상태에서 명령어를 입력하면, mObscuringWindow로 Top에 실행 중인 Chrome의 Window 정보가 보이며 여기서 패키지 이름과 액티비티 이름을 찾을 수 있습니다.
com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivity
: package name / activity name
$ adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp|mObscuringWindow'
mObscuringWindow=Window{b47abf2 u0 com.android.chrome/org.chromium.chrome.browser.firstrun.FirstRunActivity}
참고로, Windows에서 grep 명령어가 안된다면, 아래와 같이 "..."
로, 따옴표로 묶어서 입력하면, 디바이스 내부의 shell에서 동작하여, 디바이스의 grep을 사용하여 특정 키워드를 찾습니다.
$ adb shell "dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp|mObscuringWindow'"
2. ADB로 현재 실행 중인 액티비티의 PID 찾기
아래 명령어로 현재 Top에 실행 중인 액티비티의 PID를 찾을 수 있습니다.
$ adb shell dumpsys activity | grep top-activity
Chrome이 실행된 상태에서 명령어를 입력하면, 아래와 같이 출력되며, 여기서 2625가 pid입니다.
$ adb shell dumpsys activity | grep top-activity
Proc # 0: fg T/A/TOP LCMN t: 0 2625:com.android.chrome/u0a119 (top-activity)
Proc # 0: fg T/A/TOP LCMN t: 0 2625:com.android.chrome/u0a119 (top-activity)
루팅 디바이스에서 아래와 같이 명령어로 특정 프로세스를 종료시킬 수 있습니다.
$ adb root
$ adb shell kill -9 2625
루팅이 안된 디바이스라면, 아래와 같이 am force-stop <package name>
명령어로 특정 패키지의 프로세스를 종료시킬 수 있습니다.
$ adb shell am force-stop com.android.chrome