동시에 여러 디바이스에 테스트빌드(.apk) 설치하기 - shinyeoeun/My_Library GitHub Wiki

개요

테스트빌드를 설치할때
배포사이트(App deploy or ndeploy)에서 일일히 apk파일 다운받아 설치하고
수정빌드 나오면 기존 앱 지우고 다시설치하고
또 로그라도 취득할라치면 USB연결해야하는 등 반복작업이 지겹고 비효율적이라 생각되어
원격으로 동시에 여러 디바이스에 apk파일을 설치하고 제거하는 방법을 구현해보았다

  • 동작영상

LINE Music 테스트빌드를 pixel4, Galaxy S10 두대의 디바이스에 원격접속으로 설치하고 삭제하는 시나리오

demo

디바이스에 빌드(.apk)를 설치하고 삭제해보자

※사전작업: PC에 설치하려는 apk파일을 다운로드 받아놓음 2020-03-05_18h15_48

  • adb shell install {apk파일 경로}

apk파일 설치

  • adb shell uninstall {package}

apk파일 삭제 uninstall은 패키지로 제어하므로 패키지명 조사해야함 ㅠ

커맨드 날릴때 Success가 표시되고 디바이스에서 정상적으로 APP설치/제거되면 성공!

여러 디바이스에 동시에 빌드를 설치해보자

  1. 위의 방법으로 여러 디바이스를 원격으로 접속해 둠(여기서는 pixel4, Galaxy S10 두대에 접속)

2020-03-05_18h14_14

  1. 이렇게 여러대의 디바이스가 접속된 상태에서 install 커맨드를 날리면 에러 남 ㅠ
error: more than one device/emulator
  1. platform-tools폴더에 아래와 같이 adb+.bat 파일을 작성함
# adb+.bat

@echo off
SET ARGUMENTS=%*

if "%ARGUMENTS%" == "" (
    GOTO EOF
)

SET "ARGUMENTS=%ARGUMENTS:""="%"

SETLOCAL ENABLEDELAYEDEXPANSION
:: 접속된 모든 디바이스에 APK파일 설치 ::
FOR /F "tokens=1,2 skip=1" %%A IN ('adb devices') DO (
    SET IS_DEV=%%B
	if "!IS_DEV!" == "device" (
	    SET SERIAL=%%A
	    echo "adb -s !SERIAL! %ARGUMENTS%"
	    call adb -s !SERIAL! %ARGUMENTS%
	)
)
ENDLOCAL

:EOF
  • adb+.bat 파일 작성 경로 2020-03-05_17h35_42
  1. 이제 아래와 같이 adb+ 커맨드로 여러대의 디바이스에 동시에 커맨드를 입력이 가능해짐
# 설치
adb+ install -r "C:\ADB_TEST\apk\LineMusic-japan-debug-v3.14.1.apk"
# 삭제
adb+ uninstall jp.linecorp.linemusic.android

디바이스 원격조작을 해보자 (no more usb!)

※ 원격이 아닌 USB접속상태로 하려면 스킵!

  • adb tcpip {포트번호}

디바이스가 TCP/IP연결을 수신가능하도록 포트를 염

  • adb shell ifconfig | findstr inet

디바이스의 ip주소 취득 (디바이스 설정메뉴에서도 확인가능)

  • adb connect {ip주소}

디바이스 접속

USB케이블 제거 후 adb devices의 디바이스명이 ip:port형식으로 표시되면 원격조작 가능!

2020-03-05_16h14_46

끝!

참고자료

  • script for commands to multiple android devices on windows

https://gist.github.com/thebagchi/df29ae862fc1c296dec2#file-adb-bat

  • 모바일 앱 테스팅에 유용한 Android ADB 활용법

https://m.blog.naver.com/PostView.nhn?blogId=wisestone2007&logNo=221270537854&proxyReferer=https%3A%2F%2Fwww.google.com%2F

⚠️ **GitHub.com Fallback** ⚠️