ADB를 활용한 키 이벤트 및 터치 자동화
Android Debug Bridge(ADB)는 Android 디바이스와 PC 간의 통신을 가능하게 하는 강력한 도구이다. 이 도구를 활용하면 디바이스의 다양한 기능을 제어할 수 있으며, 특히 UI 자동화 및 테스트를 수행하는 데 유용하다. 이번 포스팅에서는 adb shell input
명령어를 활용하여 키 이벤트와 터치 자동화를 구현하는 방법을 설명한다.
1. ADB 설치 및 기본 설정
ADB를 사용하기 전에 먼저 ADB가 설치되어 있어야 한다. 설치 및 기본 설정 방법은 다음과 같다.
ADB 설치 방법
- Windows: Android SDK Platform-Tools 다운로드 후
platform-tools
폴더에 포함된adb.exe
사용 - Mac/Linux:
brew install android-platform-tools
(Mac) 또는sudo apt install adb
(Linux)
ADB 디바이스 연결
ADB 사용을 위해 Android 디바이스를 USB 또는 무선으로 연결할 수 있다.
adb devices
위 명령어를 실행하면 연결된 디바이스 목록이 출력된다. 디바이스가 정상적으로 연결되어 있다면 아래와 같이 표시된다.
List of devices attached
XXXXXXXX device
이제 ADB를 활용하여 키 이벤트 및 터치 자동화를 수행할 수 있다.
2. ADB를 활용한 키 이벤트 자동화
Android에서는 adb shell input keyevent
명령어를 사용하여 물리적 버튼 입력을 자동화할 수 있다. 대표적인 키 이벤트 예시는 다음과 같다.
2.1 홈 버튼 입력
홈 화면으로 이동하는 홈 버튼을 시뮬레이션하려면 다음 명령어를 실행하면 된다.
adb shell input keyevent KEYCODE_HOME
2.2 전원 버튼 입력
전원 버튼을 누르는 동작을 시뮬레이션하려면 다음 명령어를 사용한다.
adb shell input keyevent KEYCODE_POWER
이 명령어를 실행하면 디바이스 화면이 켜지거나 꺼진다.
2.3 백 버튼 입력
백 버튼을 입력하려면 다음 명령어를 사용한다.
adb shell input keyevent KEYCODE_BACK
이 명령어를 실행하면 뒤로 가기 동작이 수행된다.
2.4 볼륨 조절
볼륨을 증가 또는 감소시키는 명령어는 다음과 같다.
adb shell input keyevent KEYCODE_VOLUME_UP # 볼륨 증가
adb shell input keyevent KEYCODE_VOLUME_DOWN # 볼륨 감소
3. ADB를 활용한 터치 자동화
adb shell input tap
및 adb shell input swipe
명령어를 활용하면 특정 좌표를 터치하거나 스와이프 동작을 수행할 수 있다.
3.1 특정 좌표 터치
화면에서 특정 좌표를 터치하려면 adb shell input tap
명령어를 사용한다.
adb shell input tap 500 1000
위 명령어는 (500, 1000) 좌표를 터치하는 동작을 수행한다. 좌표 값은 디바이스 해상도에 따라 조정할 수 있다.
3.2 특정 좌표에서 스와이프
스와이프 동작을 수행하려면 adb shell input swipe
명령어를 사용한다.
위로 스와이프 (스크롤 업)
adb shell input swipe 500 1000 500 500
위 명령어는 (500, 1000)에서 (500, 500)으로 위로 스와이프하는 동작을 수행한다.
아래로 스와이프 (스크롤 다운)
adb shell input swipe 500 500 500 1000
위 명령어는 (500, 500)에서 (500, 1000)으로 아래로 스와이프하는 동작을 수행한다.
좌우 스와이프 (좌측으로 이동)
adb shell input swipe 1000 500 500 500
위 명령어는 (1000, 500)에서 (500, 500)으로 좌측으로 스와이프하는 동작을 수행한다.
우측으로 이동
adb shell input swipe 500 500 1000 500
위 명령어는 (500, 500)에서 (1000, 500)으로 우측으로 스와이프하는 동작을 수행한다.
4. 추가적인 ADB 자동화 예제
4.1 화면 끄기 및 켜기
ADB를 사용하여 화면을 끄거나 켜는 것도 가능하다.
화면 끄기
adb shell input keyevent KEYCODE_POWER
화면 켜기 + 잠금 해제
adb shell input keyevent KEYCODE_POWER && adb shell input swipe 500 1000 500 500
위 명령어는 전원 버튼을 눌러 화면을 켜고, 위로 스와이프하여 잠금 해제하는 동작을 수행한다.
4.2 특정 앱 실행
ADB를 사용하면 특정 패키지의 앱을 실행할 수도 있다.
adb shell monkey -p com.android.settings -c android.intent.category.LAUNCHER 1
위 명령어는 Android 설정(Settings) 앱을 실행하는 예제이다.
4.3 자동화 스크립트 작성
위 명령어들을 조합하여 UI 자동화를 위한 스크립트를 작성할 수도 있다. 예를 들어, 특정 앱을 실행하고 화면을 터치하는 스크립트는 다음과 같다.
#!/bin/bash
adb shell monkey -p com.example.app -c android.intent.category.LAUNCHER 1
sleep 2
adb shell input tap 500 1000
위 스크립트는 com.example.app
패키지를 실행한 후, 2초 기다렸다가 (500, 1000) 좌표를 터치한다.
5. 마무리
이 포스팅에서는 ADB를 활용하여 키 이벤트 및 터치 자동화를 수행하는 방법을 설명하였다. ADB의 input
명령어를 활용하면 UI 테스트, 자동화 스크립트 작성, 원격 제어 등 다양한 작업을 수행할 수 있다.
'Android > ADB' 카테고리의 다른 글
ADB를 활용한 특정 앱 강제 종료 및 재시작 (0) | 2025.02.28 |
---|---|
ADB를 활용한 GPS 및 위치 서비스 조작 (0) | 2025.02.26 |
ADB를 활용한 배터리 상태 모니터링 및 제어 (0) | 2025.02.25 |
ADB를 활용한 디바이스 성능 분석 (0) | 2025.02.24 |
ADB를 활용한 Android 시스템 설정 변경 (0) | 2025.02.23 |