0. 이슈 리포트 간소화를 하게 된 이유
모바일 기기에서 캡처 / 녹화 파일을 컴퓨터로 옮겨서 업로드하는 과정을 사수에게 묻자, 아래와 같은 방법을 소개받았다.
- 모바일 녹화, 캡처 기능 사용해 캡처
- 모바일 메신저를 이용해 업로드
- PC 메신저로 다운로드
업무 중 모바일 기기를 다뤄야 하는 건 굉장히 불편하고, 번거롭다.
따라서, 모바일 기기를 최대한 안 다루기 위해 툴을 만들었다.
그리고, 무엇보다 CMD 창에서 주르륵 업무가 되는 게 있어 보인다! (중요)
우선 직접 만들어 본 툴들을 순서대로 소개하고, 최종적으로 만든 배치 툴을 소개하려고 한다.
아래는 만들어서 쓴 기능들이다.
- 모바일 스크린샷 캡처 (ADB)
- 모바일 영상 녹화 (ADB)
- ADB Wi-Fi로 연결 (ADB)
- 영상 압축 (FFMPEG)
- 영상 자르기 (FFMPEG)
또 유용한 기능이 있으면 얼마든지 추가할 계획이다.
우선 이번 포스트에서는 캡처, 녹화를 배치스크립트로 만들어 보려 한다.
1. ADB란?
ADB(Android Debug Bridge)는 안드로이드 디바이스와 PC를 연결하여 다양한 작업을 수행할 수 있도록 돕는 CLI 툴.
QA 엔지니어의 입장에서, 앱 설치 및 삭제, 로그 분석, 화면 캡처 등 테스트의 전반적인 도움을 얻을 수 있다!
특히, 여러가지 세팅 또는 테스트 과정에서 물리적인 조작을 명령어 입력으로 해결할 수 있고, 심지어 배치 스크립트를 활용해 행동을 자동화할 수 있다.
그리고, ADB는 오픈소스다!
이번 글에서는 ADB와 배치 스크립트를 활용해 캡처/녹화하고, 이를 컴퓨터로 가지고 오는 과정을 자동화하는 간단한! 글이다.
2. ADB 설치
구글에 adb 설치를 검색하면 수 많은 글이 있으니, 보고 따라 하면 누구나 다운로드할 수 있다.
크게 해야 할 행동은 아래와 같다.
- ADB 설치해서 압축 해제
- 압축 해제 된 위치를 "시스템 환경 변수 편집"에 추가
- 휴대폰을 adb 사용 가능하게 설정 (USB 디버깅)
위 행동을 하고 나면, 명령 프롬프트(cmd) 창에서 adb devices를 입력해 보자.
위와 같이 실행되면 성공!
만약 연결된 디바이스가 있다면, 아래 이미지처럼 나온다.
R3CRA0JW89R => 내 단말기의 시리얼 넘버
device => 상태
3. 캡처
이제 다음과 같은 명령어를 입력해 볼 수 있다.
adb shell screencap -p /sdcard/screenshot.png
말 그대로, 스크린샷을 찍어보겠다는 의미.
스크린샷을 찍어서, /sdcard/screenshot.png 경로에 스크린샷이 저장된다.
adb pull /sdcard/screenshot.png
스크린샷을 찍으면, adb pull 명령어를 입력해 휴대폰에 저장된 스크린샷을 컴퓨터로 옮길 수 있다.
아래 이미지처럼, adb_cap/screenshot.png 와 같이 경로를 지정해도 된다. 대신 adb_cap 폴더가 있어야 함.
배치 스크립트를 만들어, 위 일련의 과정을 자동화할 수 있다.
아래 스크립트를 메모장에 적고, 확장자를 .bat로 바꿔서 저장하고 실행하면 빠르게 작동하는 캡처 스크립트가 완성된다.
@echo off
set /p file_name="Input file name : "
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png %file_name%.png
@echo off는 배치 스크립트가 깔끔하게 나오게 하는 기능이다. (실행 과정을 일일이 보여주는 "복창" 기능을 끄게 함)
file_name 변수에 파일명을 집어넣고,
스크린샷을 찍고,
추출할 때 %file_name% 을 이용해 png 이름을 파일명으로 저장한다.
📌 사용 방법
- 메모장에 위 스크립트 붙여 넣기 후 .bat 확장자로 저장 (adb_screenshot.bat)
- 배치 스크립트를 실행 (adb_screenshot.bat)
- 파일명을 작성 (영어로 작성)
- 자동으로 스크린샷 촬영 → "파일명.png" 파일이 PC로 이동
adb shell screencap -p /sdcard/screenshot.png 명령어를 반복하면, 기존 저장된 동일명의 이미지는 사라진다.
혹시 모바일 기기 용량 걱정에 직접 지우고 싶으면, 아래 명령어를 추가하면 된다.
adb shell rm /sdcard/screenshot.png
이제, 배치파일을 실행하고 파일명을 적는 것 만으로 자동으로 스크린숏이 저장되고, 컴퓨터로 옮길 수 있다!
4. 녹화
캡처가 있으면, 녹화 기능 또한 있다.
아래는 녹화 기능 명령어를 소개한다.
adb shell screenrecord /sdcard/record.mp4
해당 스크립트를 입력하면, 최대 3분까지 녹화가 된다.
중간에 Ctrl + C를 눌러 영상 녹화를 중단할 수 있다.
캡처와 마찬가지로, 일련의 과정을 배치 스크립트로 자동화할 수 있다.
@echo off
set /p file_name="Input file name : "
echo Recording...
echo press Ctrl + C and "N" to quit recording
adb shell screenrecord /sdcard/record.mp4
adb pull /sdcard/record.mp4 %file_name%.mp4
위와 유사하나, Ctrl + C를 누른 후 "N"을 입력하라는 안내 문구를 추가했다.
📌 사용 방법
- 메모장에 위 스크립트 붙여 넣기 후 .bat 확장자로 저장 (adb_screenrecord.bat)
- 배치 스크립트를 실행 (adb_screenrecord.bat)
- 파일명을 작성 (영어로 작성)
- 자동으로 스크린샷 촬영 → "파일명.mp4" 파일이 PC로 이동
* Ctrl + C를 누르고, 위와같이 N 입력 후 Enter을 해야 스크립트가 진행된다.
5. 마침
adb 중 아주 기초적이고 단순한 기능이고, QA 업무를 조금이라도 해본 사람들이면 아마 쉽게 알 내용들이다..만!
분명 메신저로 파일을 옮기고 있을 사람들이 분명 있을 것 같아서.. 도움이 될 수도 있을 것 같아 길게 작성해 봤다!!
다음번에는, ffmpeg를 이용해 영상을 압축하고, 자르는 기능을 소개하려고 한다..!