Kotlin 작성한 코드 Decompile

내가 작성한 Kotlin 코드가 Java로 어떻게 표현되는지 궁금할 수 있다.

이런 경우 Android Studio에서 제공하는 byte 코드 Decompile을 통해 Java로 표현되는 코드를 확인할 수 있는데 이 글에서 간단하게 디컴파일 하는 방법을 살펴보려고 한다.

Read More

2018 Google IO - AndroidX - 새로운 패키지 정리

2018 Google IO - AndroidX - 새로운 패키지 정리

그동안 com.android.support.* 또는 android.support.*와 작년에 공개한 Android Architecture Component에서 사용하던 android.arch.*의 패키지 명을 안드로이드 라이브러리 28.0.0부터 새로운 androidx.* 패키지 명으로 교체한다고 한다.

Android Jetpack으로 통합해서 제공하려고 하니 기존 support 라이브러리와 architecture 라이브러리 등을 통합 관리해서 정리된 모습을 보여주고 싶은듯하다.

다행히도 이러한 패키지 명을 교체하는데 있어서 개발자가 공들여야 할 부분은 크지 않다.

Read More

2018 Google IO - Developer Keynote

2018 Google IO - Developer Keynote

2017년에 이어 2018년에도 Google I/O 참여 기회가 생겨 참여 중에 있다.

작년보다 2주 이른 5월 초에 진행하고 있는 Google I/O는 머신 러닝의 AI for everyone!이다. 이미 모든 것에 머신 러닝이 적용되었고, 개발자는 사용할 수 있다.

필자는 안드로이드 개발자이니 안드로이드 관련 퓨처를 소개하는 Android Developer Keynote을 추가해보았다.

Read More

Kotlin 연산자 Overloading

Kotlin에서 기본으로 제공하는 산술 연산자 plus, minus 등을 +, -로 접근한다. 이러한 기법을 Kotlin에서는 Convention이라고 한다.

이번 글에서는 이러한 Convention을 확장하여 사용할 수 있는 Kotlin의 기법을 살펴보려고 한다. 대부분 산술 연산자이며, List와 Map에 접근할 때 사용하는 []등에 대해서 살펴본다.

우선 아래의 표를 기준으로 Overloading이 가능한데 산술 연산자와 단항 산술 연산자이다.

Function code
plus a + b
minus a - b
div a / b
rem a % b
times a * b
not !a
unaryPlus +a
unaryMinus -a
inc ++a, a++
dec –a, a–

Read More

Kotlin lazy property - lateinit/lazy 살펴보기

Kotlin에는 늦은 초기화를 위한 방법 2개를 제공한다.

class의 전역에 아래와 같이 값을 생성하면, 클래스가 만들어지는 시점에 변수를 함께 초기화한다.

class 생성과 동시에 변수가 초기화되면, 재 접근시 빠르게 접근이 가능하여 이득을 볼 수 있다.

class SampleActivity {

	private val sampleAdapter: SampleAdapter =
		SampleAdapter(ImageLoaderAdapterViewModel(this@SampleMainActivity, 3))
}

하지만 위 변수를 꼭 사용하는 게 아니라면 오히려 메모리 손해를 볼 수 있다.

Read More