Android Studio 4.0 새기능 살펴보기

PathoS
6 min readJun 15, 2020

--

드디어 나온 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 지원하는 에디터가 나왔다. 이건 짤 하나로 대신하겠다.
나중에 기회되면 좀 더 다뤄보는걸로 😉

googleblog에서 가져옴

Kotlin Android live templates

드디어 코틀린 편집할때 추가 설정없이 logi, logt, toast 를 쓸 수 있게 되었다!! 추가해서 쓰기 싫어서 코틀린을 주언어로 쓰지않고 있었다… 진짜다……….. (핑계가 하나씩 줄어들고 있다.)

8 지원되는 Live Templates Preferences > Editor > Live Templates 에서 Android*Kotlin들을 펼쳐 보면 된다

그 외 사소한거

Jetbrains Space 지원 플러그인을 드디어 쓸 수 있게 됨!

관련링크

이 글은 회사 컬처로그에 올렸던 글을 옮겨온 것입니다.
보통 개시한지 1주일정도 지난 후에 옮겨질 예정입니다.

--

--

PathoS
PathoS

No responses yet