한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
이제 Android Pie SDK에서 Kotlin 지원이 강화되었습니다
2018년 10월 5일 금요일
<블로그 원문은
이곳
에서 확인하실 수 있으며 번역 리뷰에는 김태호(Google)님이 참여해 주셨습니다.>
게시자: James Lau, 제품 관리자(
@jmslau
)
자바 프로그래밍 언어를 사용하다 보면, null인 값의 멤버에 접근하려다 NullPointerException을 발생시키는 실수를 흔히 하곤 합니다. Kotlin은 null값을 가질 수 있는 유형과 null값을 가질 수 없는 유형을 명시적으로 구분하여 이러한 예외가 발생하지 않게끔 합니다. 즉, 코드에서 잠재적으로 NullPointerException을 발생시킬 수 있는 부분을 제거하고 앱의 전반적인 품질을 개선하는 데 도움을 줍니다. 또한, Kotlin 코드에서 Java 프로그래밍 언어로 작성한 API를 호출하는 경우에는 API에 포함된 null 허용 여부에 대한 어노테이션을 활용해 함수의 매개변수와 반환 타입의 null 허용 여부를 확인합니다. 주석에 없는 매개변수와 반환 유형은
플랫폼 유형
으로 취급되며, 이는 Kotlin의 null 안전 보증을 약화합니다.
Android 9 발표
에서, 가장 자주 사용되는 API에 대한 null 허용 여부 어노테이션이 포함된 새로운 Android SDK를 출시했습니다. 따라서 Kotlin 코드에서 새로운 Android SDK에 포함된 API를 호출할 때 null 허용 여부를 보다 명확히 확인할 수 있습니다. 자바 프로그래밍 언어를 사용하더라도, 앞에서 소개한 어노테이션을 사용하면 Android Studio에서 null 허용 여부 규칙을 위반하는 사례를 손쉽게 찾을 수 있습니다.
심각한 변화는 아닙니다
일반적으로 Kotlin에서 null 허용 여부 계약을 위반하면 컴파일 오류가 발생합니다. 그러나 새로운 어노테이션을 포함한 API가 기존 코드와 확실히 호환될 수 있도록 Kotlin 컴파일러 팀이 제공한 내부 메커니즘을 사용하여 해당 API를 ‘최근에 어노테이션이 추가된 API’로 표시합니다. 이러한 API들은 Kotlin 컴파일러에서 오류를 일으키는 대신 경고만 발생시키며, 이를 위해 Kotlin 1.2.60 이상을 사용해야 합니다.
지금은 새로 추가된 null 허용 여부 어노테이션이 경고만 발생시키지만, 내년에 출시되는 Android SDK부터 심각도 수준을 ‘오류’로 높일 계획입니다. 이는 코드를 업데이트할 시간을 충분히 제공하기 위해서입니다.
"Kotlin을 지원하는" SDK의 사용 방법
Android Studio에서
Tools > SDK Manager
로 이동합니다. 왼쪽 메뉴에서
Android SDK
를 선택하고 SDK Platform 탭이 열려 있는지 확인합니다.
Android Studio에서 SDK Manager를 사용하여 API 레벨 28 수정 버전 6용 SDK 설치
Android 8.+ (P)를 확인하고 OK를 클릭합니다.
Android SDK Platform 28 수정 버전 6
이 아직 설치되지 않았다면 이를 설치합니다. 그런 다음, 프로젝트의 컴파일 SDK 버전을 API 28로 설정하고 null 허용 여부 어노테이션이 포함된 새로운 Android Pie SDK를 사용하기 시작합니다.
프로젝트 구조 대화상자를 사용하여 프로젝트의 컴파일 SDK 버전을 API 28로 변경
Android Studio의 Kotlin 플러그인이 최신이 아닌 경우 업데이트해야 할 수도 있습니다.
Tools > Kotlin > Configure Kotlin Plugin Updates
로 이동해서 Kotlin 플러그인의 버전이 1.2.60 이상인지 확인합니다.
설정이 완료되면, Android SDK에서 null 허용 여부 규칙을 위반하는 코드가 있을 경우 빌드에서 경고가 나타나게 됩니다. 이런 경고의 예시는 다음과 같습니다.
Android SDK에서 코드가 최근에 추가된 null 허용 여부 계약을 위반할 경우 Kotlin 컴파일러에서 표시되는 샘플 경고.
또한 잘못된 null 허용 여부 상태로 Android API를 호출하면 Android Studio의 코드 에디터에서 경고가 표시되기 시작합니다. 예시는 다음과 같습니다.
android.graphics.Path API에서 최근에 null이 아닌 유형으로 주석이 추가된 매개변수에 대해 null 참조를 전달할 경우 Android Studio의 경고.
Java 프로그래밍 언어에서 null 허용 여부 어노테이션 활용
코드가 Java 프로그래밍 언어로 작성되었더라도 새로운 null 허용 여부 어노테이션을 활용할 수 있습니다. 기본적으로 Android Studio에서 null 허용 여부 계약 규칙을 위반하면 아래와 같은 경고를표시합니다.
Java 프로그래밍 언어로 작성된 코드가 null 허용 여부 규칙을 위반할 경우 Android Studio에서 경고 표시
이 검사를 활성화되었는지 확인하려면 IDE의 설정 페이지로 이동해서 "Constant conditions & exceptions" 검사를 찾고 해당 항목이 선택되어 있는지 확인합니다.
Settings의 Inspections 페이지에서 Constant conditions & exceptions 코드 검사가 활성화되어 있는지 확인합니다.
Java 프로그래밍 언어를 사용할 경우 null 허용 여부 규칙을 위반하더라도 컴파일러 경고나 오류가 발생하지 않습니다. 이 문제를 강조하는 방법은 IDE 내에서 코드를 검사하는 것뿐입니다.
프로젝트 전체에 대해 코드 검사를 실행하고 집계된 결과를 확인할 수도 있습니다.
Analyze > Inspect Code…
를 클릭하여 코드 검사를 수행합니다.
다음 단계
Android SDK API로 개발자에게 노출되어 있는 부분은 매우 크고, 현재까지는 API의 일부에만 주석을 추가했기에 앞으로 가야 할 길이 멉니다. 앞으로 출시될 Android SDK에는 기존 Android API에 null 허용 여부 어노테이션을 추가할 뿐 아니라, 새 API에도 해당 어노테이션을을 포함하여 출시할 것입니다.
Kotlin을 사용하는 개발자를 위해 "Kotlin을 지원하는" Android SDK,
AndroidX
(
Jetpack
의 일부)의 null 허용 여부 어노테이션,
Android KTX
를 통해 지속적으로 Android API를 개선하고 있습니다. 아직 Kotlin을 사용해보지 않으셨다면 한번 사용해보시기 바랍니다. Kotlin은 코드를 간결하게 해줄 뿐만 아니라 앱의 안정성도 개선합니다.
Kotlin으로 즐겁게 개발해 보시기 바랍니다!
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed