개인 광고 영역

2017년 5월 Google I/O에서는 안드로이드에서 사용할 수 있는 새로운 언어로 Kotlin을 새로이 추가하였습니다.

kotlin-01

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

이 글은 2017년 6월 6일에 작성한 글을 수정하였습니다.

JetBrains IntelliJ에서는 이미 포함되어 배포되었는데 이번 Android Studio 3.0부터는 별도의 플러그인을 설치하지 않고도, 플러그인이 포함되게 되었습니다.

그러다 보니 Preview에서는 항상 오류가 발생하던 kotlin plugin을 이젠 공식적으로 지원받을 수 있게 되었습니다.

이번 글에는 Android Studio 3.0에서 kotlin 프로젝트 생성하는 방법을 정리합니다.


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

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


Android Studio 3.0 Preview 다운로드


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

as-01

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

as-02

현재 카나리는 Preview 6까지 나온 상태입니다. 왼쪽이 2.3.3(현재 정식 버전) 오른쪽이 카나리 3.0 Preview입니다.

as-03

새로운 프로젝트 생성 시 include Kotlin support을 선택하여 바로 kotlin 프로젝트를 만들 수 있습니다.

as-04

이제 minimum SDK는 API 14로 선택이 가능한 듯합니다. 그 이하로는 선택 자체에 노출이 안되고 있습니다.

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 프로젝트가 생성되었고, 별도의 Convert 없이 kt 확장자와 kotlin 코드의 Activity가 만들어졌음을 확인할 수 있습니다.

kotlin-02


2.x 버전까지는 Kotlin 플러그인을 직접 설치하거나, 입력하여 추가하는 형태였습니다.

하지만 Preview을 사용하지 않는 경우에는 Plugin을 직접 적용하는 Android 2.x 버전에서는 아래 글대로 처리해야 합니다.

Android Kotlin 시작하기


build.gradle - Application

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

kotlin 버전은 최근 업데이트가 잦은데 현재 1.1.3-2까지 배포된 상태입니다.

buildscript {
    ext.kotlin_version = '1.1.3-2'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0-alpha6'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

build.gradle - app

app의 build.gradle도 아래와 같이 추가됩니다.

gradle 버전이 달라져서 기존 apt 대신 implementation을 사용합니다.

그리고 이 글을 처음 작성할 때에는 없었던 kotlin android extensions도 이제는 자동으로 추가되었습니다.

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
}

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

Activity 코드

extensions까지 추가되면서 정말 깔끔한 Activity로 변경되었습니다.

findViewById 대신 extensions을 사용하고, 짧은 코드로 Navigation을 아래와 같이 적용합니다.

class MainActivity : AppCompatActivity() {

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

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

        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
    }
}

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

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


마무리

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

kotlin은 JVM 위에서 동작하며, JDK 1.6을 기반으로 바이너리가 생성됩니다. 호환성 자체가 문제 될 부분은 전혀 존재하지 않습니다.

Nullable/확장 함수/Lambda 식/Stream 등을 기본으로 사용할 수 있는 kotlin 대신 구글에서 공식으로 제공하는 백포트를 통해 Java 8.0을 사용할 수도 있습니다.

하지만 Kotlin으로 얻을 수 있는 장점이 더 많고, Kotlin을 익히는 것도 어렵지 않으니, 새로운 언어를 공부하는 재미를 느껴보시기 바랍니다.

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

Kotlin and Android

kotlin-android


개인 광고 영역

Tae-hwan

Android, Kotlin .. Create a content development.