- 페이쏘스
Android Studio 4.0 새기능 살펴보기

드디어 나온 Android Studio 4.0!! 그 중에 관심가는 기능 몇가지만 살펴보자.
Java 8+ API desugaring support
이번에 Android Stduio 4.0(이하 AS4.0) 업데이트 항목에 Java 8 API 지원항목이 많아져서 구글 열일했네 했는데(특이 java.time 패키지), 살펴보니 지원하는 방식이 기존과는 완전히 다른 방식이었다.
이제 궁금한 만큼만 살펴보자.
지원 API들
Sequential streams (java.util.stream)
A subset of java.time (최근에 제일 원했던 기능)
java.util.function
Recent additions to java.util.{Map,Collection,Comparator}
Optionals (java.util.Optional, java.util.OptionalInt and java.util.OptionalDouble) and some other new classes useful with the above APIs
Some additions to java.util.concurrent.atomic (new methods on AtomicInteger, AtomicLong and AtomicReference)
ConcurrentHashMap (with bug fixes for Android 5.0)
아 안드는 최신 언어도 못쓰고 아 답답해!! 라고 투덜거리기만 했는데 정작 목록 보고 저게 뭐지? 하는 생각만 들어서 많이 반성했다.기초 공부좀 하자
기존과 달라진 desugaring 방식(Android Gradle Plugin 4.0.0+)
기존엔 빌드중 desugaring 과정에 지원되는 언어에 맞는 바이트 코드를 생성
이번 버젼부터는 언어에서 지원되지 않는 API들을 라이브러리 DEX 파일로 만들어서 앱에 포함
desugaring 과정에서 언어버젼에 맞는 코드를 생성하는 대신 런타임에 위의 라이브러리를 사용
새로운 desugaring 설정 방법
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled true
// Sets Java compatibility to Java 8
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5'
}
새로운 Gradle script 옵션
이전에는 dataBinding이나 renderScript등 의 기능을 활성화 하는 방식이 여기저기 흩어져 있었다.
이제는 android.buildFeatures 안에 기능 활성화 설정을 할 수 있게 되었다.
이후 새로운 기능이 생기게 되면 기본적으론 비활성화 된다.
설정은 모듈 레벨의 build.gradle 파일에서 모듈별로 설정이 가능하다.
모듈 build.gradle 설정
# [app/build.gradle]
android {
buildFeatures {
// BuildConfig 클래스 생성 여부
buildConfig = true
// View Binding 기능 활성
// viewBinding.enabled는 deprecated됨
viewBinding = false
// Data Binding 기능 활성
// dataBinding.enabled는 deprecated됨
dataBinding = false
// AIDL 파일 용 바인더 클래스 생성 여부
aidl = true
// RenderScript 기능 활성
renderScript = true
// 모듈의 R클래스에 맞춤변수 주입 여부 설정(모르겠다 ;)
resValues = true
// shader AOT compilation 기능 활성(모르겠다 ;)
shaders = true
}
}
그리고 기능 활성화 기본값은 변경이 가능하다. gradle.properties 에 설정하면 프로젝트 레벨에서 적용이 가능하다.
한 가지 유의해야 할 사항은 기본값을 변경하는 것일 뿐 얼마든지 모듈의 build.gradle 파일에서 오버라이드가 가능하다.
기능 활성 기본값 변경 설정
# [gradle.properties]
android.defaults.buildfeatures.buildconfig=true
android.defaults.buildfeatures.aidl=true
android.defaults.buildfeatures.renderscript=true
android.defaults.buildfeatures.resvalues=true
android.defaults.buildfeatures.shaders=true
Motion Editor
드디어 MotionLayout 지원하는 에디터가 나왔다. 이건 짤 하나로 대신하겠다. 나중에 기회되면 좀 더 다뤄보는걸로 😉

Kotlin Android live templates
드디어 코틀린 편집할때 추가 설정없이 logi, logt, toast 를 쓸 수 있게 되었다!! 추가해서 쓰기 싫어서 코틀린을 주언어로 쓰지않고 있었다... 진짜다........... (핑계가 하나씩 줄어들고 있다.)
*8 지원되는 Live Templates Preferences > Editor > Live Templates 에서 Android*Kotlin들을 펼쳐 보면 된다
그 외 사소한거
Jetbrains Space 지원 플러그인을 드디어 쓸 수 있게 됨