드디어 나온 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 지원 플러그인을 드디어 쓸 수 있게 됨!
관련링크
이 글은 회사 컬처로그에 올렸던 글을 옮겨온 것입니다.
보통 개시한지 1주일정도 지난 후에 옮겨질 예정입니다.