반응형

무선 디버그(wireless debug)

무선 디버그가 필요한 경우

일반적으로 안드로이드 개발을 할 경우 유선으로 연결된 상태에서 디버그를 진행을 한다. 하지만, OTG와 같이 다른 장비에 연결 상태에서 디버그를 진행해야 하는 경우에는 무선으로 디버그를 해야 한다.

ADB 디버그 툴

Android Studio에서는 무선 디버그 용도로 ADB를 활용할 수 있다. adb는 안드로이드 스튜디오를 설치할대 sdk가 설치된 폴더안의 platform-tools라는 폴더 안에 있다.

안드로이드 스튜디오에서 터미널 창을 연다음에 해당 경로로 이동한다.

만약 sdk 경로를 바꾼적이 없다면,윈도우즈 기준으로 아래의 경로로 접근하면 된다.

c:\user\[사용자 계정명]\AppData\Local\Android\sdk\platform-tools

형식의 경로에 있다.

필자의 경우

c:\user\hp\AppData\Local\Android\sdk\platform-tools

만약 경로를 바꾼적이 있는데 기억이 잘 나지 않는다면, tools -> sdk manager 로 창을 연다음에 android sdk 항목으로 보면 android sdk가 설치된 경로를 확인할 수 있다.

무선 환경 설정

다음 명령어로 유선에 연결된 안드로이드 장치를 확인할 수 있다.

adb devices

만약 아무것도 보이지 않는다면, 선을 다시 연결하고, 장치 접근이 허용이 되었는지 확인하자.

다음 명령어로 안드로이드 장치에서 디버그에 사용할 포트를 열어주자

adb tcpip [port]

필자의 경우는 다음과 같이 하였다.

adb tcpip 11000

다음 안드로이드 장치의 무선 ip 주소를 파악을 해야한다. 안드로이드 장치에서 직접 알아내는 방법이 있다. 하지만, adb에서는 안드로이드 장치가 연결된 상태에서는 shell로 접근이 가능하다.

adb shell

해당 shell 리눅스의 shell과 비슷한 방식이기 때문에 ifconfig 명령어로 무선 ip 주소(wlan0)를 파악 하면 된다.

$ifconfig
wlan0     Link encap:UNSPEC    Driver wcnss_wlan
          inet addr:192.xxx.xxx.xxx  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1896200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1695900 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:889329097 TX bytes:459419469
~중략~
$exit

유닉스 계열 터미널과 같은 환경이다. 위의 wlan0(무선)의 inet addr이 있는 주소를 확인했으면, exit로 shell을 빠져나온다.

여기까지 마쳤다면, 이제 안드로이드 장치에 연결된 유선을 제거한 다음에 adb를 연결을 하면 된다.

adb connect [ip]:[port]

필자의 경우

adb connect 192.168.1.136:11000

연결이 되면, connected to 이하 메시지를 보여준다. 이제 이 상태에서 안드로이드 스튜디오에서 디버그를 실행하면, 마치 유선으로 연결된 것과 같이 똑같이 반응을 한다.

참조

회사 대표님의 조언

반응형

'Mobile Develop > (Android)JAVA' 카테고리의 다른 글

[Android]Magic Number와 String 관리  (0) 2020.02.12
반응형

Magic Number와 String 관리

작성 계기

 처음부터 내가 작성한 앱은 아니지만, 문자열과 상수들이 Magic Number를 관리하는 클래스에 작성이 되어 있는 것을 보고 기겁을 하였다. 무엇보다 목록이 많은 프로젝트였는데, 그 많은 목록을 일일히 타이핑을 했다는 것에 대해서 대단하게 느껴졌다. 하지만, 고객사에서는 추후라도 해외 진출도 생각을 하고 있는 것으로 보이므로 힘들지만, Magic Number와 번역 가능성이 있는 것들을 분리하기로 했다.

그리고 하는김에 분리하는 기준에 대해서 작성하다 보니 일반적인 표준이 될 것 같기 때문에 정리하여 기록을 남긴다.

Magic Number

 Magic Number는 프로그램을 개발을 하다보면 상수로 자주 사용되는 값을 말한다. 특히 string 같은 문자열의 경우 ""를 사용해서 상수형 문자열의 내용이 같으나 자주 선언을 하게 되면, 선언한 횟수 만큼 메모리를 점유하게 된다(물론 최근에는 최적화 기술이 발달해서 알아서 최적화 해줄 가능성도 크다). 또한 해당 문자열이 유지보수 과정에서 수정되어야 하는 경우에는 수정해야 하는 문자열을 찾는 과정은 상당한 일이 된다.

 따라서 대부분 초급 이상의 개발자들은 이러한 Magic Number을 특별한 네임스페이스에 따로 관리를 한다. 그리고 프로그램 실행중에는 변하지 않지만 준 Magic Number에 해당이 되는 것은 Cofigure 같은 설정값을 들 수 있다. 이러한 값들도 특별한 네임스페이스에서 관리하는 것이 개발 후반으로 갈 수 록 정신건강에 좋다.

value/string 리소스

 공식 안드로이드 개발자 가이드라인에서는 다국어 지원 서비스를 원활하게 하기 위해서는 문자열을 res/value/string.xml 에 작성하기를 권장하고 있다. 그리고 다른 언어에 대해서는 한국어에 대해서는 res/value-ko/string.xml 형식으로 관리가 된다. 물론 프로젝트 관리 메뉴에서는 string 파일이 2개로 보인다. 또한 단순히 언어만 구분을 짓는 것이 아니라 기기, 화면 비율 등에 따라서 문자열을 다르게 조절할 수 있다(자세한 것은 공식 가이드라인을 참조)

Magic Number와 value/string 리소스 구분 기준

 로직을 구현하는 문자열의 경우에는 언어에 상관이 없는 문자열들은 코드상 Magic Number로 간주하고 관리하는 것이 좋다(모드, 기능명, 분기 같은 문자열은 Magic Number로 간주).

 JAVA에서는 switch문에서 문자열로 구분을 할 수 있는 기능들이 있다. 이 switch문에서 case로 입력 받는 값은 상수형이어야 한다. 그러나 리소스에서 가져온 문자열은 일반 문자열이기 때문에 바로 swith문의 분기로 사용할 수 없다. 당연한 이야기지만, 언어가 바뀌면, 기준도 바뀌는 위험이 있기 때문이다.

덤, error: unescaped apostrophe in string 에러

종종 string.xml 에 "'"가 있는 경우에 발생하는 에러이다. 해당 문자열을 ""으로 감싸주거나, ' 앞에 \을 붙여주면 된다.

반응형

'Mobile Develop > (Android)JAVA' 카테고리의 다른 글

[Android Studio]무선 디버그(wireless debug)  (0) 2020.03.25

+ Recent posts