개인 광고 영역

이번 Google I/O에서 Android 정식 언어로 채택된 Kotlin!

kotlin-01

Google I/O 2017 행사에서 직접 촬영한 사진입니다. 코틀린 정식 언어 채택 때 엄청난 환호가 함께 하였습니다.

Android Studio 3.0부터는 기존 Plugin을 설치하지 않고도 Kotlin 프로젝트를 바로 생성하고, 개발을 시작할 수 있게 되었습니다.

이번 글에서는 Android Studio 3.0에서 코틀린 프로젝트를 생성하는 방법을 간단하게 정리합니다.

제가 유데미에서 진행하는 Android Kotlin 강의입니다.

안드로이드 공식 언어 : 코틀린(Kotlin) 시작하기 15달러 쿠폰


Android Studio 3.0 Preview 다운로드


Android Studio 3.0 Preview 다운로드 받기 위한 사이트입니다. Early Adopter라고 써져있습니다.

오랜만에 Preview 설치하는 건데 이렇게 사이트도 생겼네요.

as-01

이름도 기존에는 Android Studio라고만 나와서 카나리와 일반 버전 분리해서 사용하기 까다로웠는데 이제는 이름도 버전 명과 Preview라고 써두어서 중복되지 않아서 편해졌네요.

as-02

현재 카나리는 3까지 나온 상태입니다. 좀 더 빠르게 정식 코틀린을 편하게 사용할 수 있는 환경이 만들어졌으면 좋겠군요.

아이콘이 조금 변경되었습니다. 왼쪽이 2.3.1(현재 정식 버전) 오른쪽이 카나리 3.0 Preview입니다.

as-03

새로운 프로젝트를 추가하면 여기서부터 달라진 부분이 발생합니다.

바로 include Kotlin support입니다.

이렇게 생성하면 즉시 Kotlin 프로젝트로 생성됩니다.

as-04

이제는 Minimum SDK가 15로 설정됩니다.

as-05

6월 5일 발표한 Android Dashboards에서보면 4.4 아래가 많이 내려간 것을 확인할 수 있습니다.

그렇다고 해도 4.x 버전 모두 합치면 8.8%이라서 무시할 수 있는 수준은 아니겠지만, 신규로 앱을 만드는 경우에는 마음 편히 4.4(KitKat)부터 시작하시는 게 좋겠죠.

dashboards

프로젝트를 새로 생성하면 나오는 Activity의 종류도 많이 늘었습니다.(이건 정식 버전도 같습니다)

저는 이 프로젝트 중 Bottom Navigation Activity를 골랐습니다.

as-06

Bottom Navigation Activity를 생성하면 아래와 같은 화면을 볼 수 있습니다.

as-07


Kotlin 프로젝트


Include Kotlin support만 눌렀는데 바로 kotlin 프로젝트가 생성되었습니다.

생성한 프로젝트에는 기본 Kotlin 코드가 눈에 띕니다.

시작과 동시에 아무것도 하지 않고도 Kotlin을 작업할 수 있는 환경이 만들어졌습니다.

kotlin-02


기존에는 Android Studio를 설치하고, Kotlin 플러그인을 검색하고, 설치 후 재실행하고, 여기에 다시 Kotlin을 설정을 추가해야 했었죠.

하지만 아직 3.0은 정식 버전이 아니라서 당분간은 AS에 Plugin을 설치하는 방법으로 접근하는 게 가장 좋은 접근법입니다.

Android Kotlin 시작하기을 참고하시면 설치하는 방법을 참고할 수 있습니다.


추가되어 있는 코드는 기존의 Kotlin을 적용하는 방법과 동일합니다.

build.gradle - Application

우선 프로젝트 최상위의 build.gradle에는 아래와 같이 담겨있습니다.

코틀린 플러그인을 적용하였을 때 보았던 코드와 동일합니다.

buildscript {
    ext.kotlin_version = '1.1.2-4'

    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

build.gradle - app

app에서도 동일하게 적용되어 있습니다. apt 대신 implementation이라는 gradle 명칭은 변경되었지만 그 외에는 모두 직접 추가하였을 때와 동일합니다.

아쉽게도 kotlin android extensions이 없다는 게 아쉽군요.

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:25.3.1'
}

코드

kotlin 코드로 자동으로 만들어진 Activity는 아래와 같습니다.

onClickListener을 구현되어 있고, !!을 통해 null이 아니어야 함을 명확하게 처리한 코드입니다.

findViewById도 적용되어 있습니다.

참고로 Java에서는 더 이상 TextView tv = (TextView) findViewById(R.id.tv);이라고 쓰지 않아도 됩니다! 그냥 TextView tv = findViewById(R.id.tv);라고 쓰면 되겠습니다.!

class MainActivity : AppCompatActivity() {

    private var mTextMessage: TextView? = null

    private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId) {
            R.id.navigation_home -> {
                mTextMessage!!.setText(R.string.title_home)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_dashboard -> {
                mTextMessage!!.setText(R.string.title_dashboard)
                return@OnNavigationItemSelectedListener true
            }
            R.id.navigation_notifications -> {
                mTextMessage!!.setText(R.string.title_notifications)
                return@OnNavigationItemSelectedListener true
            }
        }
        false
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mTextMessage = findViewById(R.id.message) as TextView
        val navigation = findViewById(R.id.navigation) as BottomNavigationView
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }
}

위의 코드는 BottomNavigationView의 샘플입니다.

제가 정리했던 BottomNavigationView은 구글에서 설명하는 UI 구현을 100% 하지 않고, ViewPager를 활용한 예제였습니다.


마무리

Android Studio 3.0이 정식 버전이 출시되려면 아직 2~3개월이 더 지나야겠지만 Preview 업데이트 속도를 보면 더 빠르게 나올 수 있을 것 같습니다.

이번 Preview는 Android O를 테스트하기 위한 프리뷰이기에 하지만 Kotlin도 적용이 가능하기에!

그리고 Java 8.0의 일부 기능을 구글에서 공식적으로 백포트로 제공합니다. 람다식과 스트림 정도만 사용하실 거라면 굳이 Kotlin으로 넘어올 이유는 없을지 모르겠지만 Nullable/함수 확장 등의 더 많은 기능을 제공하는 Kotlin 사용하는 것도 새로운 재미를 함께 느낄 수 있습니다.

이제 정식 버전의 Kotlin을 익혀두시면 개발하는데 더 많은 즐거움을 찾을 수 있을 것 같습니다.

Android Kotlin 소개 페이지에 나오는 공식 심볼입니다! 코틀린에 매달린 안드로보이!

Kotlin and Android

kotlin-android


개인 광고 영역

Tae-hwan

Android, Kotlin .. Create a content development.