반응형

무선 디버그(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
반응형

Basic class 문법

Java와 관계

Java는 처음 등장시 하나의 언어로 모든 플랫폼에서 동작한다는 철학으로 처음 큰 관심을 받았고, 현재는 가장 많은 개발자들이 현업에서 사용하고 있는 언어이다. 이러한 특징때문에 구글의 안드로이드는 Java를 개발지원 언어로 채택하여서 단기간에 ios 개발 생태계를 따라잡게 된다(인해전술로).

문제는 Java는 본래 임베디드(세탁기, 전자렌지 같은 것들)를 위해 설계된 언어였고, 썬마이크로즈를 오라클에서 인수하면서 오라클사의 소유이다. 때문에 Java 오라클과 구글간 분쟁이 있었고 오라클이 재판에서 승소를 하게 되었다. 하지만, 젯브레인즈(JetBrains)사에서 구글과 협력하여 kotlin(러시아 샹트페테부르크의 앞의 섬 이름)이 등장하게 된다.

안드로이드에서 Java를 대체하고자 하는 영향도 컸으며, 안드로이드에 특화된 언어라서 Java 코드를 kotlin으로 변환하는 것도 가능하다. 즉, 안드로이드 한정으로 Java로 된 것은 kotlin으로도 가능하다(아직 필자가 low수준까지 해보지 않아 확신 못하나 그렇게들 설명하고 있다).

class

코틀린(kotlin)은 안드로이드 한정으로 자바(Java) 대체 가능한 언어기 때문에 같은 개념인 클래스가 존재한다.

클래스의 상속

자바와 반대로 코틀린은 기본적으로 상속이 금지이다. 상속을 가능하게 하기 위해서는 open 키워드를 사용한다. 프로그래밍 언어에서 특정 키워드를 추가하여 허용을 한다는 것은 해당 동작에 대해서 보수적인 것을 뜻하기도 한다.

open class Animal {
    // contents
}

class Dog : Animal {
    // contents
}

인자를 받는 생성자가 있는 클래스를 상속하는 경우 초기화 상속도 가능하다.

open class Animal(val name : String) {
}

class Dog(name: String) : Animal(name) {
}

내부 클래스

클래스 내에서 클래스를 사용하는 경우 inner 라는 키워드를 앞에 붙여 줘야 한다. 이는 기존의 가독성 문제를 보완하기 위한 것으로 생각된다.

class OuterClass {
    var a = 10

    inner class OuterClass2 {
        fun someThing() {
            a = 20
        }
    }
}

추상 클래스

자바와 비슷하게. abstract 키워드를 사용한다.

abstract class A {
    abstract fun func()

    fun func2() {

    }
}

class B : A() {
    overide fun func() {
        println("hello")
    }
}

val b = B()

참고 자료

서적: 오준석의 안드로이드 생존코딩(코틀린편)

반응형

+ Recent posts