기존 프로젝트에 코틀린 지원 추가하기
기존 프로젝트에도 어렵지 않게 코틀린 지원을 추가할 수 있습니다. 먼저, 코틀린 그래들 플러그인을 사용할 수 있도록 프로젝트 루트 경로의 build.gradle 파일의 classpath 항목을 추가합니다. 그 다음 코틀린을 사용할 모듈의 빌드스크립트에 코틀린 플러그인을 적용하고 의존성에 코틀린 표준 라이브러리를 추가합니다.
//gradle
buildscript {
ext.kotlin_version = '1.2.30'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}//end of buildscript
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'org.jetbrains.anko:anko-commons:0.10.5'
}
자바 코드와 코틀린 코드 분리하기
안드로이드 프로젝트에서 자바 코드는 java 폴더에 저장합니다. 재미있게도 코틀린으로 작성된 코드를 이 폴더에 두어도 빌드에 는 전혀 지장이 없으며, 여기에 있는 코틀린 코드도 모두 정상으로 처리됩니다.
하지만 자바 코드가 많은 기존 프로젝트를 코틀린 코드로 변환할 때 자바 코드와 코틀린 코드를 구분하지 않고 저장한다면 차후 관리하기가 어려울 수 있습니다. 따라서 자바 코드와 코틀린 코드는 가급적 분리하여 관리하는 것을 추천합니다.
코틀린 코드를 저장하는 폴더의 이름은 보통 kotlin을 사용하며, 자바 코드를 저장하는 폴더와 같은 단계에 두면 됩니다.
폴더를 생성한 후, 다음과 같이 모듈의 빌드스크립트에서 추가한 폴더를 소스 코드 폴더로 인식하게끔 설정합니다.
gradle
android{
//폴더를 생성한 후, 다음과 같이 모듈의 빌드스크립트에서 추가한 폴더를 소스 코드 폴더로 인식하게끔 설정합니다.
sourceSets{
main.java.dstDirs += 'src/main/kotlin'
}
}//end of android
자바에서 코틀린 코드 사용하기
여기에서는 자바 코드에서 코틀린 코드로 작성된 클래스 혹은 라이브러리를 사용할 때 유의할 점을 알아봅니다.
프로퍼티의 Getter/Setter화
코틀린에서 생성한 클래스를 자바에서 사용하는 경우, 클래스 내 정의돈 프로퍼티는 Getter/Setter 형태로 값을 읽거나 설정할 수 있습니다.
기본 매개변수가 있는 함수
코틀린에서는 함수의 매개변수에 기본 매개변수를 설정할 수 있지만, 자바는 그렇지 않습니다. 때문에, 별다른 처리 없이 기본 매개변수가 있는 함수를 자바에서 사용하려면 함수에 모든 인자를 넣어주어야 합니다.
하지만 기본 매개변수를 사용하는 함수에 @JvmOverloads 어노테이션을 추가하면 자바에서도 기본 매채변수의 이점을 누릴 수 있도록 매개변수에 맞게 함수를 여러벌 생성해 줍니다.
'개발 > Android' 카테고리의 다른 글
[Android] 액티비티(Activity)와 생명주기(Life Cycle) (0) | 2019.01.26 |
---|---|
[Android] 안드로이드 스튜디오 유용한 단축키 (*mac os 기준) (0) | 2019.01.25 |
[Android] 안드로이드 스튜디오의 폴더 구성 (0) | 2019.01.25 |
[02] Genymotion 설치 및 Android Studio와 연동하기 (0) | 2018.05.24 |
[01] windows에서 안드로이드 스튜디오(Android Studio) 설치하기 (0) | 2018.05.23 |