취보특개

Android ADB Usage 본문

Boan/모바일

Android ADB Usage

ha3kkkkk 2021. 1. 9. 19:59

ADB(Android Debug Bridge)란.

안드로이드 장치와 통신하여 디버깅 등의 작업을 진행할 수 있는 툴이다.

 

 

ADB를 이용하면,

 애플리케이션 설치 및 백업, 디버깅, 삭제

 시스템 정보 확인 및 발생되는 로그 확인

 스크린샷, 화면녹화, 시스템 애플리케이션 비활성화

  등 다양한 명령을 내릴 수 있다.

 

 

ADB 작동방식,

 ① ADB클라이언트실행

 ② ADB 서버 프로세스가 실행중인지 점검, 실행상태가 아니라면 서버 구동

 ③ 로컬 TCP 포트 5037에 바인딩되어 클라이언트로부터 전송되는 명령어 수신 대기

 


 

ADB 설치방법

1. 설치파일

 (Windows) https://dl.google.com/android/repository/platform-tools-latest-windows.zip
 (Linux) https://dl.google.com/android/repository/platform-tools-latest-linux.zip
 (Mac OS) 용 https://dl.google.com/android/repository/platform-tools-latest-darwin.zip

2. 쉘

 (Linux)

$ sudo apt-get install android-tools-adb

 (Mac OS (Homebrew))

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew cask install android-platform-tools

 (Mac OS (MacPorts))

$ sudo port install android
$ sh /opt/local/share/java/android-sdk-macosx/tools/android
# 이후 platform-tools 선택 후 설치
$ echo 'export PATH=$PATH:/opt/local/share/java/android-sdk-macosx/platform-tools' >> ~/.bash_profile
$ source ~/.bash_profile

 


안드로이드 기기 설정 및 연결

ADB를 사용하기 위해서는 안드로이드 기기에서 "ADB 디버깅"이 활성화 되어있어야 한다.

  ① 설정 > 휴대폰정보 > '빌드번호'를 7회이상 클릭하면 '개발자옵션'이 활성화 됨 

  ② 개발자옵션 > 'usb 디버깅' 체크 (usb를 꽂지않은 상태에서 진행해야함)

  ③ 안드로이드 기기와 PC 연결

      ※ 연결확인 명령어 $adb devices

          > offline : adb 연결되지 않았거나 응답하지 않을 경우

          > device : adb 연결되었을 경우

          > no device : 연결된 예뮬레이터 또는 안드로이드 기기가 없을 경우

          > unauthorized가 떠도 아래 재시작 명령어 수행

      ※ ADB 연결 이상 시 ADB 재시작 명령어 

           $adb kill-server

           $adb start-server

           $adb devices

       ※ Wi-Fi를 통한 기기 연결

           > USB가 아닌 무선으로 연결할 수 있다. 아래 링크 참고

            developer.android.com/studio/command-line/adb?hl=ko

 


ADB 명령어

--윈도우라면 cmd에서 adb.exe의 위치로 이동한 뒤 명령어를 사용하면 된다.

 

2개 이상의 기기를 연결 했을 때 특정 기기로만 명령어 전송

$ adb shell -s [Serial Number] 명령어

 

안드로이드 기기 재시작

#일반
$ adb reboot
#리커버리 모드
$ adb reboot recovery
#부트로더
$ adb reboot bootloader

 

백업 및 복원

# 백업 옵션 목록
# -f(파일 경로 지정) -apk(apk 파일 포함) -noapk(apk 미포함)
# -all(전체백업) -shared(저장소백업) -noshared
# system(시스템영업 백업) -nosystem

# 전체 백업
$ adb backup -all -f backup.ab
# 앱데이터만
$ adb backup -noapk -noshared -nosystem -all -f backup.ad
# 앱과 앱데이터만
$ adb backup -apk -noshared -nosystem -all -f backup.ad

# 복원
$ adb restore backup.ad

 

파일 복사

#안드로이드 기기 > PC
$ adb pull "복사대상 파일 경로" "저장할 파일 경로"
# PC > 안드로이드 기기
$ adb push "복사대상 파일 경로" "저장할 파일 경로"

'''
Push 할 때, Permission Deny에러가 발생한다면, 일단 옮기려는 폴더에 chmod 777 권한을 주자
'''

 

애플리케이션 설치, 종료,삭제

#애플리케이션 설치
$ adb install "apk fileName"
#애플리케이션 재설치 (데이터 삭제X)
$ adb install -r "apk fileName"
#애플리케이션 메모리카드에 설치
$ adb install -s "apk fileName"
#애플리케이션 강제종료
$ adb shell am force-stop "packageName"
#애플리케이션 삭제
$ adb uninstall "packageName"

 

안드로이드 기기 로그 모니터링

# 모든 로그 출력
$ adb logcat
# 특정 로그 출력
$ adb logcat *:"옵션"
# 특정 로그 출력 옵션
# V(verbose) D(debug) I(info) W(warning) E(error) F(fatal) S(silent)
$ adb logcat *:D

 

스크린샷 및 녹화

#스크린샷
$ adb shell /system/bin/screencap -p "저장경로.png"
#녹화
$ adb shell screenrecord /sdcad/"파일명.mp4"

 

패키지 목록 보기 및 앱 활성화/비활성화

# 설치된 패키지 목록
$ adb shell pm list packages -f
# 설치된 패키지 데이터 삭제
$ adb shell pm clear "packageName"
# 특정 패키지 활성화 및 비활성화(구버전)
$ adb shell pm enable "packageNme"
$ adb shell pm diable "packageNme"
# 특정 패키지 활성화 및 비활성화(신버전)
$ adb shell pm unhide "packageNme"
$ adb shell pm hide "packageNme"
# 특정 패키지 비활성화 시 권한 에러가 날 경우
$ adb shell pm uninstall -k --user 0 "packageName"
# 특정 패키지 강제종료
$ adb shell am force-stop "packageName

 

안드로이드 기기 정보 확인

리눅스 기반이기 때문에 리눅스 서버 명령어 앞에 adb shell만 붙여주면 된다.

adb shell tcpdump, adb shell ping 등 리눅스 명령어 모두 동작한다.

# 커널 버전확인
$ adb shell cat /proc/version
# 안드로이드 버전확인
$ adb shell getprop ro.build.version.release
# 프로세서 정보
$ adb shell cat /proc/cpuinfo
# 실제 메모리 및 가상 메모리
$ adb shell cat /proc/meminfo
# 커널에 등록된 모듈 목록
$ adb shell cat /proc/devices
# 커널에 등록된 파일시스템 목록
$ adb shell cat /proc/filesystems
# 현재 input/output 포트
$ adb shell cat /proc/ioports
# swap 파티션의 크기 및 사용량
$ adb shell cat /proc/swaps
# 파티션 정보
$ adb shell cat /proc/partitions
# 시스템 가동시간
$ adb shell cat /proc/uptime
# 시스템 상태정보
$ adb shell cat /proc/stat
# 시스템 리소스 모니터
$ adb shell vmstat
# 실행중인 프로세스 목록
$ adb shell ps
# 시스템 프로세스 상황 모니터링
4 adb shell top
# 커널 디버깅 메세지
$ adb debug

 

 

'Boan > 모바일' 카테고리의 다른 글

iOS jailbreaking  (0) 2021.03.14
iOS Homebrew Usage  (0) 2021.03.14
Android Rooting  (0) 2021.01.10
Frida Usage - 1 (Basic Concept)  (0) 2021.01.09
Android static analysis  (0) 2019.12.07
Comments