88- STF
99date : 2024-05-24 17:57 +0900
1010---
11- 이 글에서는 스마트폰과 스마트워치 등의 장치를 원격으로 디버깅할 수 있는 STF(Smartphone Test Farm)에 대해 소개합니다. STF를 이용하면 다양한 디바이스를 서버에 연결하여, 개발한 애플리케이션을 여러 디바이스 환경에서 쉽게 테스트할 수 있습니다. 1인 개발자로서, 브라우저를 통해 원격으로 핸드폰을 조작할 수 있다는게 가장 큰 장점인 것 같습니다.
11+ 이 글에서는 스마트폰과 스마트워치 등의 장치를 원격으로 디버깅할 수 있는 STF(Smartphone Test Farm)에 대해 소개합니다.
12+
13+ STF를 이용하면 다양한 디바이스를 서버에 연결하여, 개발한 애플리케이션을 여러 디바이스 환경에서 쉽게 테스트할 수 있습니다.
1214
1315공식 git 주소는 다음과 같습니다.
1416[ https://github.com/DeviceFarmer/stf ] ( https://github.com/DeviceFarmer/stf )
@@ -22,39 +24,63 @@ List of devices attached
2224192.168.0.40:5555 device
2325```
2426
25- ## 주요 기능
27+ ![ stf 화면] ( /assets/img/STF/stf.webp )
28+ <p class =" image-caption " >STF 메인 화면</p >
2629
27- ### 운영 체제 지원
28- - ** 안드로이드** : 2.3.3 (SDK 10)부터 12 (SDK 32)까지 지원
29- - ** Wear OS** : 5.1 지원 (5.0은 권한 문제로 지원하지 않음)
30- - ** 기타** : Fire OS, CyanogenMod 등 안드로이드 기반 배포판 지원
30+ ## Docker로 실행
31+ Dockerfile을 제공해주기 때문에, Docker 환경에 익숙한사람은 docker를 활용하면 아주 쉽게 세팅할 수 있습니다.
32+ > Docker가 익숙하지 않거나 로컬에서 바로 실행하고 싶다면 [ 설치 방법] ( #설치-방법 ) 으로 바로 넘어가세요
33+ {: .prompt-info}
34+
35+ ```
36+ stf-docker/ # 프로젝트 루트
37+ ├── docker-compose.yml # STF 서비스를 정의
38+ └── .env # PUBLIC_IP 등 가변 환경변수
39+ ```
3140
32- ### 장치 제어
33- - 브라우저에서 장치 원격 제어
34- - 실시간 화면 보기 (최대 30-40 FPS)
35- - 회전 지원
36- - 키보드 입력 및 메타 키 지원
37- - 드래그 앤 드롭을 통한 apk 파일 설치 및 실행
38- - 장치 로그 실시간 보기 및 필터링
41+ ``` yaml
42+ # docker-compose.yml
43+ services :
44+ rethinkdb :
45+ image : rethinkdb:2.4
46+ container_name : rethinkdb
47+ network_mode : host
48+ restart : unless-stopped
49+ stf :
50+ image : devicefarmer/stf:latest
51+ container_name : stf
52+ network_mode : host # 호스트 네임스페이스 그대로 사용
53+ volumes :
54+ - ~/.android:/root/.android # 호스트 ADB RSA 키 재사용
55+ environment :
56+ # STF 웹 UI·포트 포워딩에 표시될 호스트 주소
57+ - PUBLIC_IP=${PUBLIC_IP:-127.0.0.1}
58+ command : >
59+ stf local
60+ --public-ip ${PUBLIC_IP:-127.0.0.1}
61+ --adb-host 127.0.0.1
62+ --adb-port 5037
63+ --provider-min-port 7400
64+ --provider-max-port 7500
65+ --no-cleanup
66+ --allow-remote
67+ restart : unless-stopped
68+ depends_on :
69+ - rethinkdb
70+ ```
71+ ```
72+ #.env
73+ PUBLIC_IP={나의 IP 주소} # (ex. 192.168.0.62) 호스트 → STF 접근 시 사용
74+ ```
75+ 위와 같이 설정하고 ` docker compose up -d ` 를 하면 바로 smartfarm을 사용할 수 있습니다.
76+ host와 adb server를 공유하기 때문에, usb로 새로운 디바이스를 꽂으면 바로 인식됩니다.
3977
40- ### 장치 관리
41- - 연결된 장치 상태 모니터링 (사용 중, 오프라인, 인증되지 않음 등)
42- - 장치 하드웨어 사양 표시
43- - 배터리 상태 모니터링
78+ docker가 실행되면 바로 [ 브라우저로 접속] ( #브라우저로-접속하기 ) 하시면 됩니다.
4479
4580## 설치 방법
81+ Host에 직접 설치해서 실행할 수도 있습니다.
4682
4783### 1. 필수 의존성 설치
48- - Node.js (최대 20.x)
49- - ADB
50- - RethinkDB (>= 2.2)
51- - CMake (>= 3.9)
52- - GraphicsMagick
53- - ZeroMQ 라이브러리
54- - Protocol Buffers 라이브러리
55- - yasm
56- - pkg-config
57-
5884``` bash
5985# Add the RethinkDB repository
6086wget -qO- https://download.rethinkdb.com/repository/raw/pubkey.gpg | \
@@ -68,7 +94,7 @@ sudo apt-get update
6894sudo apt-get install -y nodejs adb rethinkdb cmake graphicsmagick libzmq3-dev libprotobuf-dev yasm pkg-config npm
6995```
7096
71- 만약 ` apt update ` 중에 RethinkDB repository 때문에 error가 난다면 직접 빌드해서 사용할수도 있습니다 .
97+ 만약 ` apt update ` 중에 RethinkDB repository 때문에 error가 난다면 직접 빌드해서 사용하면 됩니다 .
7298``` bash
7399# Remove RethinkDB repository
74100sudo rm /usr/share/keyrings/rethinkdb-archive-keyrings.gpg
@@ -97,28 +123,41 @@ rethinkdb
97123``` bash
98124stf local
99125```
100- 그 후 브라우저로 ` http://localhost:7100 ` 접속하면 됩니다.
101- ![ STF 로그인 페이지] ( /assets/img/STF/login.webp )
102- <p class =" image-caption " >STF 로그인 페이지</p >
103-
104- 초기 관리자 계정은 다음과 같습니다.
105- > Name: administrator
106- 107126
108127만약 localhost가 아닌 외부에서 접근하고 싶다면 다음과 같이 실행하면 됩니다.
128+
109129``` bash
130+
110131stf local --public-ip < your_internal_network_ip_here>
111- # ex) stf local --public-ip 192.168.0.55
132+
133+ # ex) stf local --public-ip 192.168.0.55
134+
112135# 브라우저로 http://192.168.0.55:7100 접속
136+
113137```
114138
139+
115140또한 usb가 아닌 wifi로 연결되어 있는 디바이스(` ex. adb connect 192.168.0.40:5555 ` )도 지원하려면 ` --allow-remote ` 를 추가해야 합니다.
141+
116142``` bash
143+
117144stf local --allow-remote
145+
118146```
119- ![ stf 화면] ( /assets/img/STF/stf.webp )
120- <p class =" image-caption " >STF 메인 화면</p >
147+
148+
149+ ## 브라우저로 접속하기
150+
151+ 그 후 브라우저로 ` http://localhost:7100 ` 접속하면 됩니다.
152+ ![ STF 로그인 페이지] ( /assets/img/STF/login.webp )
153+ <p class =" image-caption " >STF 로그인 페이지</p >
154+
155+ 초기 관리자 계정은 다음과 같습니다.
156+ > Name: administrator
157+ 158+
121159
122160> 만약 접속이 안되거나 control 페이지에 디바이스 화면이 보이지 않는다면, 방화벽을 끄고 시도해보세요.
123161 {:.prompt-tip}
124162
163+
0 commit comments