본문 바로가기

모바일(Mobile)/안드로이드(Android)

[Android] 안드로이드 스튜디오에서 원격으로 디버깅 하기 with ADB

안드로이드 스튜디오(Android Studio)에서는 원격 접속을 통해 디바이스에 앱을 설치하거나 디버깅을 할 수 있다.

 

안드로이드 앱의 시스템 설정에서 빌드 번호를 찾아 열심히 터치하면 개발자 모드를 켤 수 있는데,
보통 한국인이 많이 사용하는 갤럭시 스마트폰을 기준으로 하면 설정 > 휴대전화 정보 > 소프트웨어 정보 에서 빌드 번호를 찾을 수 있다.


아래와 같이 빌드번호를 찾아 열심히 연타하면 개발자 모드를 활성화할 수 있고,

원격이 아니더라도 안드로이드 스튜디오에서 스마트폰 등을 사용해서

개발하거나 테스트할 때는 개발자 모드가 필요하니 알아두면 좋다.

 

 

위와 같이 설정에서 빌드번호를 연타했다면, 휴대폰 내에서 개발자 모드가 켜지는데,

개발자 모드가 켜져있을 경우 외부로부터 파일을 주고 받거나 앱을 설치할 수 있기 때문에
개발 중이지 않을 경우에는 사용하지 않는 것이 보안상 안전하다.

 

 

 

 

 

개발자 모드를 활성화 했다면, 개발자 옵션 메뉴로 들어가서 USB 디버깅 모드 를 활성화 해야 한다.

이 설정을 켜두지 않으면 유선이나 무선으로 앱을 설치하고 디버깅 할 수 없으므로 잘 체크해야 한다.

 

다음으로 개발에 사용할 PC에서 adb 환경 변수가 설정되었는지 확인해야 한다.

안드로이드 스튜디오가 설치되어 있다면,
보통 PC 내에  C:\Users\AppData\Local\Android\Sdk\platform-tools 경로에 있으므로,
이 경로를 위의 사진과 같이 환경 변수로 등록해주어야 터미널(Terminal) 창에서 명령어가 사용 가능하다.

 

 


ADB를 사용해서 원격으로 디바이스를 사용하는 방법들

1. 원격으로 안드로이드 디바이스를 연결하기

 

안드로이드 디바이스를 와이파이에 연결시키면 adb 명령어를 통해 원격으로 접속할 수 있다.
다만 그 전에 위에 설명했던 두 가지 환경 설정을 확인해야하는데,


    ① 안드로이드 디바이스에서 개발자 모드 中 USB 디버깅 모드 활성화
    ② 내 PC에서 adb 명령어 사용을 위한 환경변수 설정


두 가지가 모두 잘 되었는지 확인해야한다.

그 후에 아래와 같이 명령어를 입력하면,

adb connect IP주소

 

adb connect 192.168.0.77

 


아래와 같이 안드로이드 스튜디오에서 디바이스가 원격으로 잘 접속된 것을 확인할 수 있다.

 

 

 

그리고 이렇게 성공적으로 연결된 디바이스는

안드로이드 스튜디오를 통해 앱을 설치하거나 디버깅, 그리고 로그를 찍어볼 때 사용 가능하다.

 


2. 원격으로 안드로이드 디바이스에 앱 설치하기

 

안드로이드 스튜디오에서 애뮬레이터로 앱을 설치할 경우

버튼 하나만 눌러서 설치하거나, 드래그 앤 드롭으로 앱을 설치할 수 있지만,
원격으로 앱을 설치한 경우에는 CLI 환경인 터미널(Terminal) 창에서 아래와 같이 명령어를 입력해서 앱을 설치할 수 있다.

adb install D:\files\sample.apk

 

다른 방법도 분명 있겠지만, 개인적인 생각으로는 이게 제일 깔끔한 것 같다.
단, 폴더명을 한글로 하거나 특수문자가 있으면 원활하게 설치하지 못할 수 도 있으니 꼭 귀찮아도 영어로 폴더명을 작성하는 습관을 들이면 좋다.

 

위의 명령어를 통해 앱을 설치하면 아래와 같이 콘솔에 로그가 찍히면서 설치가 완료된다!

 

PS D:\Androidk\Test> adb install D:\files\sample.apk
Performing Streamed Install
Success
PS D:\Android\Test>

 


3. 원격으로 안드로이드 디바이스의 디렉토리 구조 확인하기

안드로이드 OS에서도 윈도우나 리눅스(Linux) 처럼 기본적인 디렉토리 구조가 존재한다.
이러한 구조는 파일이나 필요한 소스를 찾을 때 유용하게 활용 가능하며, 아래의 명령어를 통해 파일 구조를 확인 가능하다.

adb shell ls


위 명령어에서 ls만 뺀 명령어를 사용하면 

adb shell


터미널 창을 통해서 안드로이드 디바이스로 내부로 이동할 수 있는데
그 후에는 터미널(Terminal) 창에서 CMD 명령어 (cd, ls 등)도 사용 가능하다.

만약 다시 PC로 돌아오고 싶다면, exit 명령어를 입력하면 된다.

 


4. 안드로이드 디바이스로 파일 옮기기

윈도우와 같은 그래픽 사용자 인터페이스(GUI) 환경이라면 일반 사람들에게도 익숙한 사용법으로 인해 파일을 옮기고 저장하는 일은 비교적 쉽다.
하지만, 터미널을 통해 안드로이드 디바이스에 접속하고 그 안에서 파일을 옮기는 것은
커멘드 라인 명령어를 통해서 할 수 있고, 방법에만 익숙하다면 이 방법이 더 편할 수 있다.

PC에서 안드로이드 디바이스로 파일을 옮기는 명령어는 아래와 같다.

adb push [파일이 있는 경로] [옮길 경로]



여기서 첫번째 자리는 파일이 있는 곳 까지의 경로를 의미하며,
윈도우 파일 탐색기에서 쉽게 볼 수 있는  C:/ D:/ 등으로 시작하는 경로를 입력하면 된다.

두번째 자리는 파일이 이동할 경로를 입력하면 되는데, 
안드로이드 OS 에서는 아무 곳에나 파일을 이동할 수 있는 것은 아니다.
가령, 시스템 수준에서 열람 조차 거부한 주소도 있고, 조회는 되는데 편집이나 파일 이동이 안되는 주소도 있다.

보통 테스트로 파일을 옮길 때에는 사진, 영상 등의 파일을 많이 옮기게 되는데,
이 때에는 /storage/emulated/0/ 아래에 있는 경로에 데이터를 이동시키는 것이 일반적이다.

여기서 '0' 하나만 뺀 상위 디렉토리로 접근하게 되면,
별도의 권한을 허용하지 않은 한 터미널로 친절하게 안된다는 것을 알려주는데,

아래와 같이 허용되지 않은 주소에 대해서 조작이 일어나게 되면 OS 차원에서 제한될 수 있다.

 

adb push D:\files\myimage.jpg /storage/emulated

adb: error: failed to copy 'D:\files\myimage.jpg' to '/storage/emulated/myimage.jpg': remote couldn't create file: Permission denied



보안상의 이유로라도 안드로이드의 운영 방침에 어긋나는 변칙적인 사용은 특별한 목적이 없다면

득보다 실이 많을 수 있으므로 목적에 맞게 정책을 준수하며 사용하는 것이 좋다.

 

안드로이드에서 파일이나 이미지와 같은 파일은 /storage/emulated/0/DCIM 의 하위 경로를 사용한다.

 

 

adb를 통해 파일을 옮기는 것은 아래의 명령어를 사용하면 된다.

adb push D:\files\myimage.jpg /storage/emulated/0/DCIM

 

 

만약 특정 디렉토리 안에 있는 모든 파일을 옮기고 싶다면 아래와 같이 한 번에 옮길 수도 있다.

adb push D:\files\. /storage/emulated/0/DCIM