Post

나만의 Smartphone Test Farm 만들기 (STF)

이 글에서는 스마트폰과 스마트워치 등의 장치를 원격으로 디버깅할 수 있는 STF(Smartphone Test Farm)에 대해 소개합니다. STF를 이용하면 다양한 디바이스를 서버에 연결하여, 개발한 애플리케이션을 여러 디바이스 환경에서 쉽게 테스트할 수 있습니다. 1인 개발자로서, 브라우저를 통해 원격으로 핸드폰을 조작할 수 있다는게 가장 큰 장점인 것 같습니다.

공식 git 주소는 다음과 같습니다.
https://github.com/DeviceFarmer/stf

환경

  • Ubuntu 22.04
  • adb 연결된 android device
    1
    2
    3
    
    $ adb devices
    List of devices attached
    192.168.0.40:5555       device
    

주요 기능

운영 체제 지원

  • 안드로이드: 2.3.3 (SDK 10)부터 12 (SDK 32)까지 지원
  • Wear OS: 5.1 지원 (5.0은 권한 문제로 지원하지 않음)
  • 기타: Fire OS, CyanogenMod 등 안드로이드 기반 배포판 지원

장치 제어

  • 브라우저에서 장치 원격 제어
  • 실시간 화면 보기 (최대 30-40 FPS)
  • 회전 지원
  • 키보드 입력 및 메타 키 지원
  • 드래그 앤 드롭을 통한 apk 파일 설치 및 실행
  • 장치 로그 실시간 보기 및 필터링

장치 관리

  • 연결된 장치 상태 모니터링 (사용 중, 오프라인, 인증되지 않음 등)
  • 장치 하드웨어 사양 표시
  • 배터리 상태 모니터링

설치 방법

1. 필수 의존성 설치

  • Node.js (최대 20.x)
  • ADB
  • RethinkDB (>= 2.2)
  • CMake (>= 3.9)
  • GraphicsMagick
  • ZeroMQ 라이브러리
  • Protocol Buffers 라이브러리
  • yasm
  • pkg-config
1
2
3
4
5
6
7
8
9
10
# Add the RethinkDB repository
wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | \
    sudo gpg --dearmor -o /usr/share/keyrings/rethinkdb-archive-keyrings.gpg

echo "deb [signed-by=/usr/share/keyrings/rethinkdb-archive-keyrings.gpg] https://download.rethinkdb.com/repository/ubuntu-$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list

sudo apt-get update

# Install all requirements
sudo apt-get install -y nodejs adb rethinkdb cmake graphicsmagick libzmq3-dev libprotobuf-dev yasm pkg-config npm

만약 apt update중에 RethinkDB repository 때문에 error가 난다면 직접 빌드해서 사용할수도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
# Remove RethinkDB repository
sudo rm /usr/share/keyrings/rethinkdb-archive-keyrings.gpg
sudo rm /etc/apt/sources.list.d/rethinkdb.list

# Get the Source code
wget https://download.rethinkdb.com/repository/raw/dist/rethinkdb-2.4.4.tgz
tar xf rethinkdb-2.4.4.tgz

# Build RethinkDB
sudo apt install -y clang python m4
cd rethinkdb-2.4.4
PYTHON=/bin/python3 ./configure --allow-fetch CXX=clang++
sudo make install

2. STF 설치

1
sudo npm install -g @devicefarmer/stf

3. RethinkDB 실행

1
rethinkdb

4. STF 실행:

1
stf local

그 후 브라우저로 http://localhost:7100 접속하면 됩니다.
STF 로그인 페이지

STF 로그인 페이지

초기 관리자 계정은 다음과 같습니다.

Name: administrator
E-mail: administrator@fakedomain.com

만약 localhost가 아닌 외부에서 접근하고 싶다면 다음과 같이 실행하면 됩니다.

1
2
3
stf local --public-ip <your_internal_network_ip_here>
# ex) stf local --public-ip 192.168.0.55  
# 브라우저로 http://192.168.0.55:7100 접속

또한 usb가 아닌 wifi로 연결되어 있는 디바이스(ex. adb connect 192.168.0.40:5555)도 지원하려면 --allow-remote를 추가해야 합니다.

1
stf local --allow-remote

stf 화면

STF 메인 화면

만약 접속이 안되거나 control 페이지에 디바이스 화면이 보이지 않는다면, 방화벽을 끄고 시도해보세요.

This post is licensed under CC BY 4.0 by the author.