• 페이쏘스

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 지원 플러그인을 드디어 쓸 수 있게 됨





관련링크


(주)웨딩북

주소 서울시 강남구 청담동 36-1

사업자등록번호 220-88-77848

통신판매업신고 제 2014-서울강남-03451호

문의전화 02-6205-4161  ㅣ  팩스 02-6959-9858

icon_facebook.png
icon_instagram.png
icon_youtube.png