안드로이드 스마트폰 자동화를 위한 파이썬과 ADB 완벽 가이드

이 가이드는 파이썬과 ADB(안드로이드 디버그 브릿지)를 사용하여 안드로이드 스마트폰을 자동화하는 방법을 설명합니다. 자동화 작업은 개발자와 IT 전문가에게 있어 필수적인 스킬 중 하나입니다. 특히 안드로이드 기기의 제어 및 관리, 그리고 반복적인 작업의 자동화는 매우 유용할 수 있습니다. 이 가이드에서는 ADB 설치부터 파이썬 코드를 이용한 스마트폰 제어, 그리고 블루스택과 같은 안드로이드 에뮬레이터를 활용한 테스트까지 모든 과정을 상세하게 다룹니다.

안드로이드 스마트폰 자동화를 위한 파이썬과 ADB 완벽 가이드


1. ADB (Android Debug Bridge) 소개

1.1 ADB란?

ADB는 Android Debug Bridge의 약자로, 안드로이드 운영 체제를 실행하는 장치와 통신하기 위한 명령줄 도구입니다. 이를 통해 개발자는 다양한 명령을 사용하여 안드로이드 기기와 상호작용할 수 있으며, 개발, 디버깅, 그리고 자동화 작업을 수행할 수 있습니다.

ADB는 크게 세 가지 구성 요소로 이루어져 있습니다:

  • 클라이언트: 사용자의 컴퓨터에서 실행되며, ADB 서버에 명령을 보냅니다.
  • 서버: 클라이언트와 데몬(daemon) 간의 통신을 관리합니다.
  • 데몬(daemon): 안드로이드 장치에서 백그라운드로 실행되며, 서버와의 통신을 담당합니다.

1.2 ADB의 주요 기능

  • 앱 설치/제거: ADB를 사용하면 명령줄을 통해 애플리케이션을 설치하거나 제거할 수 있습니다.
  • 기기 제어: 스크린샷 캡처, 시스템 로그 확인, 파일 전송 등의 기능을 수행할 수 있습니다.
  • 원격 명령 실행: 기기에서 명령어를 원격으로 실행할 수 있으며, 이를 통해 다양한 작업을 자동화할 수 있습니다.
  • 앱 디버깅: 개발 중인 앱을 디버깅하고, 버그를 찾아 수정할 수 있습니다.

2. ADB 설치 및 설정

ADB를 설치하고 환경을 설정하는 단계는 스마트폰 자동화의 기초를 마련하는 작업입니다. ADB가 제대로 설치되어야 파이썬을 통해 안드로이드 기기를 제어할 수 있습니다.

2.1 ADB 설치

  • ADB 다운로드: 구글의 공식 안드로이드 개발자 웹사이트에서 ADB를 포함한 SDK 플랫폼 도구를 다운로드합니다.
  • 압축 파일 해제: 다운로드한 파일의 압축을 해제합니다. Windows에서는 파일을 오른쪽 클릭하여 "압축 풀기"를 선택할 수 있습니다. 압축을 푼 후, ADB를 사용하기 위해 경로를 시스템 PATH에 추가하는 것이 좋습니다. 이렇게 하면 터미널 또는 명령 프롬프트에서 어디서든 ADB 명령어를 사용할 수 있습니다.
  • 환경 변수 설정: Windows에서 "내 PC" -> "속성" -> "고급 시스템 설정" -> "환경 변수"를 선택하여, PATH 변수에 ADB 경로를 추가합니다.

2.2 안드로이드 기기 설정

  • 개발자 모드 활성화: 스마트폰의 "설정" 메뉴에서 "휴대폰 정보"로 이동하여 "빌드 번호"를 7번 연속으로 누릅니다. 그러면 개발자 모드가 활성화됩니다. 이후 "설정" -> "개발자 옵션"에서 "USB 디버깅"을 활성화합니다.
  • 기기 연결: USB 케이블을 사용하여 안드로이드 기기를 PC에 연결합니다. 연결 후, 명령 프롬프트에서 adb devices를 입력하여 기기가 제대로 연결되었는지 확인할 수 있습니다. 명령어를 입력하면, 연결된 기기의 고유 식별자가 표시됩니다.

3. 파이썬을 이용한 스마트폰 자동화

이제 ADB와 파이썬을 통해 안드로이드 기기를 제어하는 방법을 알아보겠습니다. 이 과정에서는 파이썬의 pure-python-adb 라이브러리를 사용합니다. 이 라이브러리는 파이썬에서 ADB 명령어를 실행할 수 있도록 도와줍니다.

3.1 파이썬 환경 설정

  • 파이썬 설치 및 환경 설정: Python.org에서 최신 버전의 파이썬을 다운로드하여 설치합니다. 설치 후, 명령 프롬프트 또는 터미널에서 python --version 명령을 입력하여 설치된 버전을 확인합니다.
  • 필요한 라이브러리 설치: ADB를 파이썬으로 제어하기 위해 pure-python-adb 라이브러리를 설치합니다. 설치 명령어:
    pip install pure-python-adb

3.2 파이썬 코드로 ADB 설정 및 기기 연결

다음은 파이썬에서 ADB 서버를 시작하고, 연결된 안드로이드 기기를 탐지하는 코드 예제입니다. 이 코드를 통해 ADB 서버와의 통신이 가능하며, 기기와 상호작용할 수 있습니다.

from ppadb.client import Client

# ADB 서버에 연결
client = Client(host='127.0.0.1', port=5037)
find_devices = client.devices()

# 연결된 기기가 있는지 확인
if len(find_devices) == 0:
    print('No devices')
    quit()

# 첫 번째 연결된 기기를 선택
device = find_devices[0]
print(f'찾은 디바이스={device}')
    

3.3 ADB를 이용한 웹 브라우저 실행 및 제어

이제 ADB 명령어를 사용하여 안드로이드 기기에서 웹 브라우저를 실행하고, 특정 웹사이트로 이동하는 과정을 자동화해보겠습니다.

# 기본 웹 브라우저를 열고 네이버로 이동
device.shell('input keyevent 64')  # 기본 웹 브라우저 열기
device.shell('input text "www.naver.com"')
# 네이버 주소 입력

device.shell('input keyevent 66')  # 엔터 키 이벤트 (URL 실행)

    

3.4 스크린샷 캡처 및 저장

파이썬을 통해 안드로이드 기기의 화면을 캡처하고, 그 결과를 이미지 파일로 저장할 수도 있습니다. 아래 코드는 스크린샷을 캡처하고 이를 screenshot.png 파일로 저장하는 예제입니다.

# 스크린샷 캡처

result = device.screencap()

# 스크린샷 저장

with open("screenshot.png", "wb") as fp:

    fp.write(result)

    

3.5 앱 설치 및 제거

ADB를 통해 파이썬으로 앱을 설치하거나 제거하는 방법도 있습니다. 다음은 간단한 예제입니다.

# APK 파일 설치

device.install('path/to/your/app.apk')

# 앱 제거

device.uninstall('com.example.yourapp')

    

3.6 기타 유용한 ADB 명령어

  • 파일 전송: 기기에서 PC로 파일을 전송하거나, PC에서 기기로 파일을 전송할 수 있습니다.
    # 기기에서 PC로 파일 전송
    
    device.pull('/sdcard/yourfile.txt', 'yourfile.txt')
    
    # PC에서 기기로 파일 전송
    
    device.push('yourfile.txt', '/sdcard/yourfile.txt')
    
                
  • 시스템 로그 확인: logcat 명령어를 사용하여 시스템 로그를 확인할 수 있습니다. 로그는 디버깅 시 유용한 정보를 제공합니다.
    logs = device.shell('logcat -d')

4. 고급 ADB 명령어 사용

4.1 시스템 로그 확인 (Logcat)

시스템 로그를 확인하는 것은 디버깅에 매우 유용합니다. ADB를 사용하면 안드로이드 기기에서 발생하는 모든 이벤트와 로그 메시지를 실시간으로 확인할 수 있습니다. 이를 통해 애플리케이션의 상태나 오류 메시지를 파악할 수 있습니다.

# 시스템 로그 확인 (Logcat)

logs = device.shell('logcat -d')

print(logs)

    

이 코드는 logcat 명령어를 사용하여 시스템 로그를 확인하는 방법을 보여줍니다. -d 옵션은 로그를 한 번만 덤프하고 명령을 종료합니다. 이 로그는 파이썬 콘솔에 출력되며, 필요에 따라 파일로 저장할 수도 있습니다.

# 로그를 파일로 저장

with open("system_logs.txt", "w") as log_file:

    log_file.write(logs)

    

4.2 앱 포그라운드/백그라운드 전환

자동화 작업 중 앱을 포그라운드로 전환하거나 백그라운드로 보내는 기능은 매우 유용합니다. 이를 통해 앱의 상태를 관리하고 필요한 작업을 수행할 수 있습니다.

# 앱을 포그라운드로 전환

device.shell('am start -n com.example.yourapp/.MainActivity')

# 앱을 백그라운드로 전환

device.shell('input keyevent 3')  # 홈 버튼을 눌러 앱을 백그라운드로 전환

    

4.3 특정 UI 요소 조작

ADB를 통해 특정 UI 요소를 조작할 수도 있습니다. 예를 들어, 특정 버튼을 클릭하거나 텍스트 필드에 값을 입력하는 등의 작업이 가능합니다.

# 특정 좌표 클릭 (예: x=100, y=200)

device.shell('input tap 100 200')

# 텍스트 필드에 텍스트 입력

device.shell('input text "Hello, World!"')

    

4.4 화면 회전

자동화 스크립트에서 화면의 방향을 제어할 수도 있습니다. 예를 들어, 화면을 가로 모드로 변경하거나 다시 세로 모드로 전환할 수 있습니다.

# 화면을 가로 모드로 전환

device.shell('content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1')

# 화면을 세로 모드로 전환

device.shell('content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0')

    

5. 실습: 종합적인 자동화 스크립트 작성

이제까지 배운 내용을 바탕으로, 실습을 통해 종합적인 자동화 스크립트를 작성해보겠습니다. 이 스크립트는 웹 브라우저를 실행하고, 네이버로 이동한 후, 스크린샷을 캡처하여 저장하는 작업을 포함합니다. 또한, 시스템 로그를 확인하여 작업 중 발생한 오류를 추적할 수 있게 합니다.

from ppadb.client import Client

import time

# ADB 클라이언트 초기화

client = Client(host='127.0.0.1', port=5037)

device = client.devices()[0]

# 웹 브라우저 실행 및 네이버 이동

device.shell('input keyevent 64')  # 웹 브라우저 열기

time.sleep(2)

device.shell('input text "www.naver.com"')  # 네이버 주소 입력

time.sleep(1)

device.shell('input keyevent 66')  # 엔터키 입력 (URL 실행)

# 페이지 로드 대기

time.sleep(5)

# 스크린샷 캡처 및 저장

screenshot = device.screencap()

with open("naver_screenshot.png", "wb") as fp:

    fp.write(screenshot)

# 시스템 로그 확인 및 저장

logs = device.shell('logcat -d')

with open("system_logs.txt", "w") as log_file:

    log_file.write(logs)

# 로그 파일에서 특정 오류 메시지 검색

with open("system_logs.txt", "r") as log_file:

    for line in log_file:

        if "ERROR" in line:

            print("Error found:", line)

    

6. 블루스택을 활용한 테스트

블루스택(BlueStacks)은 안드로이드 앱을 PC에서 실행할 수 있게 해주는 강력한 에뮬레이터입니다. 실제 안드로이드 기기를 사용하는 대신, 블루스택을 활용하여 테스트를 진행할 수 있습니다. 이는 반복적인 테스트 작업을 자동화하는 데 매우 유용합니다.

6.1 블루스택 설치

  • 공식 웹사이트에서 블루스택 다운로드: BlueStacks 공식 웹사이트에서 설치 파일을 다운로드합니다.
  • 블루스택 설치 및 설정: 설치 후, 블루스택을 실행하고 초기 설정을 완료합니다. "ADB" 옵션을 활성화하여 파이썬 코드에서 블루스택과 통신할 수 있도록 합니다.

6.2 블루스택과 ADB 연동

블루스택이 ADB 서버와 연결되면, 실제 기기처럼 파이썬 코드에서 제어할 수 있습니다.

# 블루스택과의 연결

device = client.device('emulator-5554')  # 블루스택 에뮬레이터의 디바이스 ID

# 앞서 설명한 모든 ADB 명령을 블루스택에 적용할 수 있습니다.

    

블루스택을 이용한 자동화는 실제 기기 테스트를 보완하거나 대체할 수 있으며, 특히 물리적 장비 없이도 효율적인 테스트를 가능하게 합니다.

7. 결론 및 심화 학습

파이썬과 ADB를 이용한 안드로이드 스마트폰 자동화는 매우 강력한 도구이며, 다양한 작업을 자동화할 수 있는 가능성을 제공합니다. 이 가이드에서 설명한 내용은 기본적인 자동화 작업부터 고급 명화 작업, 그리고 실습 예제에 이르기까지 광범위하게 다룹니다.

이제 이러한 내용을 바탕으로 자신만의 자동화 스크립트를 작성해보세요. 특히 반복적인 테스트, 앱 디버깅, 그리고 데이터 수집 작업에서 큰 효율성을 경험할 수 있을 것입니다.

  • 카카오톡 메시지

댓글 쓰기

다음 이전