NOX - ./adb.exe logcat 요약
./adb.exe devices
> portNumber
./adb.exe connect 127.0.0.1:[###portNumber###]
./adb.exe shell ps | grep com.패키지이름,패키지이름
> pidNumber
./adb.exe logcat --pid=[###pidnumber###]
순서대로 실행하는 것으로 Nox에서 실행되는 패키지의 log를 볼 수 있다.
adb란?
에디터상에서는 Debug.log(" ");로 손쉽게 로그를 확인할 수 있지만. 빌드로 넘어가게 되면 안드로이드에서는 확인하기 어렵다. 이럴때를 위해 필요한 것이 adb (Android Debug Bridge)이다.
https://developer.android.com/studio/command-line/adb?hl=ko
안드로이드 스튜디오의 사용자 가이드를 보면,
이 도구는 다음과 같은 세 가지 구성요소를 포함하는 클라이언트-서버 프로그램입니다.
명령어를 전송하는 클라이언트. 클라이언트는 개발 머신에서 실행됩니다. adb 명령어를 실행하여 명령줄 터미널에서 클라이언트를 호출할 수 있습니다.
기기에서 명령어를 실행하는 데몬(adbd). 데몬은 각 기기에서 백그라운드 프로세스로 실행됩니다.
클라이언트와 데몬 간의 통신을 관리하는 서버. 서버는 개발 머신에서 백그라운드 프로세스로 실행됩니다
adb는 클라이언트, 데몬, 서버 이 세가지로 구성됨을 알 수 있는데. 우리는 주로 클라이언트를 조작해 서버를 통해 기기내의 데몬과 통신함으로써 우리가 원하는 로그를 얻어내게 된다는 것을 알 수 있다.
adb를 사용하기위해선, adb를 구동할 기기 뿐만 아니라 연결 대상이 될 안드로이드 기기가 필요한데(당연하다;). 안드로이드에서 개발자 모드를 활성화하고.. 케이블을 찾고.. USB를 연결해 디버그모드를 허용하고..이런 일련의 과정이 너무 번거로워서 Nox 앱 플레이어로 대체하여 사용하고 있다.
또한 Nox와 같은 앱플레이어는 에뮬레이터라서, 특정 부분만 구현하는 시뮬레이션(ios)와 달리 시스템 전체를 복사하기 때문에 (참고) 실 기기를 대체하기에 충분하다고 판단했다.
Nox와 adb연결하기
Nox에서도 안드로이드에서와 동일하게, 설정(App) > 정보 > 버전정보를 연타해서 개발자모드를 열 수 있는데, 그 전에 Nox 시스템 설정 > 일반 에서 Root모드를 켜주고 재부팅을 해주어야 한다. 전자의 설정은 앱 형태로 Nox의 다른 앱들 사이에, 후자의 시스템 설정은 Nox 창 최상단에 톱니바퀴 모양으로 존재하고 있으므로. 주의해야 한다.
시스템 설정이 끝나면, ProgramFile에서 Nox가 설치된 폴더로 들어가야 하는데. (최초에 Nox를 설치할 때 지정한 그 경로로 들어가면 된다.) 해당 폴더 안에 있는 bin폴더에 들어가게 되면. adb.exe가 있는 것을 확인할 수 있다. 여기에 있는 이 adb를 사용해서 연결해야 하는데. 일반적으로 배포되고있는 adb의 서버/클라이언트버전 과 nox의 adbd(데몬) 버전이 서로 다르기 때문에 (현재는 Nox = 36, 배포 = 40) 상기한 폴더 내부에 있는 adb를 사용해 주어야 한다.
터미널에서 직접 해당 폴더로 찾아들어가도 되겠지만. 해당 폴더 바탕의 적당한 빈 공간에다가 우클릭을 찍고 터미널에서 열기를 선택하면 이 폴더가 ./로 잡혀있는 터미널을 열 수 있다. (내 경우에는, Git Bash를 사용하기 때문에 이런 형태를 띄고있었다) 해당 터미널에 다음과 같은 명령어를 입력할 수 있는데.
./adb.exe devices
> Nox가 연결되어있는 포트번호가 뜬다.
./adb.exe connect 127.0.0.1:###아까 나온 포트번호###
> connected to ###연결하려고 하는 포트번호###
./adb logcat
위에서부터 순서대로,
- ./adb.exe devices : 연결되어있는 디바이스를 찾고
- ./adb.exe connect ### : 찾은 디바이스에 연결을 시도하고
- ./adb.exe log cat : 해당 디바이스에서 돌아오는 log들을 출력하는 명령어이다.
이를 통해 디바이스에서 현재 발생하는 로그들을 다 받아서 출력할 수 있다. 뿐만 아니라
./adb.exe shell ps | grep com.패키지이름,패키지이름
으로 특정 앱이 실행되는 pid를 얻어낸 뒤
./adb.exe logcat --pid=###pidnumber###
이런식으로 특정 앱에서 나오는 로그만 본다거나
./adb.exe logcat --pid=###pidnumber### 2>&1|tee ./logcat_log.txt
그 로그를 출력하면서 & 파일에다 저장해둘 수 있다.
'개발 조각글' 카테고리의 다른 글
Unity Refactoring - 게임의 핵심루프 설계 (0) | 2022.08.13 |
---|---|
Unity Refactoring - 달팽이키우기 Action 분리하기 (0) | 2022.08.13 |
Unity - 유닛테스트를 염두한 함수 설계 (0) | 2022.08.08 |
Unity Refactoring - 달팽이키우기 클래스간 관계 (0) | 2022.08.04 |
Unity Refactoring - 달팽이키우기 UIManager 설계 (0) | 2022.08.02 |