adb logcat | grep -E 'System.err'

오늘은 지난 ADB를 사용하는 방법에 대한 글에 이어서,

자주 사용하는 ADB명령어에 관해 정리해 보았습니다.

 

참고로 지난 글은 아래 링크를 참조해 주세요.

ADB(Android Debug Bridge)를 사용하는 방법

1. 자주 사용하는 ADB 명령어들

1-1. 앱 데이터 삭제

adb shell pm clear <패키지 이름>

 

1-2. 앱 삭제

adb uninstall <packagename> 

앱 데이터 삭제나 앱 삭제는 테스트를 위해서 자주 사용하는 명령어 인데요.

이렇게 삭제 함에도 불구하고, 안드로이드에서는 Cloud로 백업을 해서

SharedPreference값을 재설치해도 복원해서 사용하므로 데이터 값이 제거되지 않는 경우가 있습니다.

이럴 경우에는 Manifest에서 다음과 같이,

allowBackup을 false로 설정해 주시면 삭제후 재 설치때 기존의 값이 사라진 것을 확인 할 수 있습니다.

데이터베이스의 경우에도 이렇게 백업이 될 수 있으니,

테스트중에는 false로 해 놓는 것이 더욱 편리합니다.

 

 

1-3. 앱 설치

 

앱을 설치할 때는 아래 명령어를 사용할 수 있는데요.

-r옵션을 사용하면 기존의 데이터를 삭제하지 않고 재설치를 하게 해 줍니다.

adb install 설치파일이름.apk
adb install -r 설치파일이름.apk

 

1-4. 안드로이드 시스템에 등록된 알람 리스트 확인

안드로이드 시스템에 등록된 알람리스트는 아래 명령어로 확인할 수 있는데요.

자신의 패키지 명에 대해서만 필터링해 보고자 하면, grep명령어를 아래와 같이 사용할 수 있습니다.

(개인적으로는 패키지명 끝과 "}"를 붙여서 필터링하는 것이 편해서 그렇게 하였습니다.)

 

grep명령어의 -A는 찾고자 하는 문자열이 포함된 줄에서 이후 몇 줄까지를 찾고자 하는 옵션인데요.

"-A 5"하면 해당 문자열 이후 5줄을 출력해 주라고 하는 것입니다.

이와 반대되는 개념으로는 "-B"가 있습니다.

adb shell dumpsys alarm
adb shell dumpsys alarm | grep -A 5 <패키지 명 혹은 식별자>

 

1-5. 접속된 Device확인

adb devices

 

1-6. Activity 확인

Activity나 service등에 관한 정보도 아래 명령어를 통해서 얻을 수 있습니다.

adb shell dumpsys activity | grep <패키지 명>

 

1-7. WAKE LOCK확인

 

adb shell dumpsys power를 사용하면 전원관리와 관련된 정보를 얻을 수 있는데요.

그 중에서도 WAKE_LOCK에 대한 정보를 얻기 위해서, WAKE키워드를 이용해 아래와 같이 확인할 수 있습니다.

adb shell dumpsys power | grep -A 5 WAKE

 

 

1-8. 등록된 JobScheduler 확인

등록되어져 있는 background task를 확인할 수 있습니다.

adb shell dumpsys jobscheduler | grep <패키지 명>

 

1-9. 잠자기 및 대기 모드 테스트

A. 잠자기 모드와 해제에 대한 명령어

잠자기 모드는 아래 명령어를 사용하면 되구요.

adb shell dumpsys deviceidle force-idle

 

 

잠자기 모드의 해제 명령어는 다음과 같습니다.

adb shell dumpsys deviceidle unforce

기기를 활성화해서 활성화된 상태에서의 테스트는 아래 명령어를 이용하면 됩니다.

adb shell dumpsys battery reset

 

B. 대기모드와 해제에 대한 명령어

먼저 대기모드는 아래 명령어를 사용하면 되구요.

adb shell dumpsys battery unplug
adb shell am set-inactive <패키지 명> true

 

이에 대한 해제는 다음과 같이 해주면 됩니다.

adb shell am set-inactive <packageName> false
adb shell am get-inactive <packageName>

잠자기나 대기에 대한 구글문서는 아래를 참조하시면 됩니다.

https://developer.android.com/training/monitoring-device-state/doze-standby

 

1-10. 특정 패키지의 PID확인

PID는 process id인데요. 이를 확인할 수 잇는 명령어가 있습니다.

adb shell pidof <패키지 명>

 

1-11. PID destroy하기

위의 명령어를 이용해서 해당 패키지의  PID를 알아낸 다음,

아래 명령어로 해당 프로세스를 강제로 destroy하는 테스트등을 해 볼수 있습니다.

서비스같은 경우, 다른 PID를 가질 수 있으므로, 그 서비스를 destroy 해 볼 수 있겠지요.

 

adb shell kill <PID>

 

1-11. pid에 따른 logcat 필터링

위에서 알아온 pid값을 이용해서 해당 패키지만 필터링 되도록 할 수 도 있습니다.

adb logcat --pid=<pid 값>

 

1-12. logcat 필터링

아래와 같이 logcat에 대해서 grep명령어를 이용하여 특정 캐릭터에 대하여 필터링이 가능합니다.

아래에서는 "System.err" 혹은  "ActivityManger"에 대해서 필터링을 하고 있네요.

참고로 -E 옵션은 정규표현식으로 필터링을 하는 것 입니다.

adb logcat | grep -E 'System.err|ActivityManager'

 

1-13. 패키지 강제 종료

간혹, 강제종료 상황을 테스트해야하는 경우가 있는데요.

아래의 명령어를 사용해서 테스트가 가능합니다.

adb shell am force-stop <패키지 명> 

 

물론 pid 값을 이용해서 앱을 종료시킬 수도 있습니다.

adb shell kill <PID 값>

 

 

2. 정리

이상으로 자주 사용하는 ADB명령어에 대해서 정리해 보았습니다.

추가적으로 유용한 ADB관련 명령어들은 이 글을 통해서 업데이트 하도록 하겠습니다

 

 

 

+ Recent posts