Android/ADB

ADB를 활용한 키 이벤트 및 터치 자동화

임베디드 친구 2025. 2. 27. 10:23
728x90
반응형

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 tapadb 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 테스트, 자동화 스크립트 작성, 원격 제어 등 다양한 작업을 수행할 수 있다.

반응형