Android Gradle 플러그인 3.2.0(2018년 9월)

이 버전의 Android 플러그인에는 다음이 필요합니다.

3.2.1(2018년 10월)

이 업데이트를 통해 더 이상 SDK 빌드 도구의 버전을 지정하지 않아도 됩니다. 이제 Android Gradle 플러그인이 기본적으로 버전 28.0.3을 사용합니다.

새로운 기능

  • Android App Bundle 빌드 지원: 이 App Bundle은 모든 앱의 컴파일된 코드와 리소스를 포함하는 동시에 APK 생성 및 Google Play 스토어 서명은 지연시키는 새로운 업로드 형식입니다. 더 이상 여러 APK를 빌드, 서명, 관리할 필요가 없으며 사용자는 기기에 최적화된 작은 용량을 다운로드합니다. 자세한 내용은 Android App Bundle 정보를 읽어보세요.

  • 주석 프로세서 사용 시 개선된 증분 빌드 속도 지원: 이제 AnnotationProcessorOptions DSL이 CommandLineArgumentProvider를 확장하여 개발자나 주석 프로세서 작성자가 증분 빌드 속성 유형 주석을 사용하는 프로세서의 인수에 주석을 달 수 있습니다. 이러한 주석을 사용하면 증분 및 캐시된 클린 빌드의 정확성과 성능이 개선됩니다. 자세한 내용은 주석 프로세서에 인수 전달을 읽어보세요.

  • AndroidX용 이전 도구: Android 3.2 이상에서 Android Gradle 플러그인 3.2.0을 사용하는 경우 메뉴 바에서 Refactor > Migrate to AndroidX를 선택하여 프로젝트의 로컬 및 Maven 종속 항목을 이전해 새로운 AndroidX 라이브러리를 사용할 수 있습니다. 이 이전 도구를 사용하면 gradle.properties 파일에서 다음 플래그를 true로 설정하기도 합니다.

    • android.useAndroidX: true로 설정하면 Android 플러그인은 지원 라이브러리 대신 적절한 AndroidX 라이브러리를 사용합니다. 이 플래그를 지정하지 않으면 Android 플러그인은 기본적으로 false로 설정합니다.

    • android.enableJetifier: true로 설정하면 Android 플러그인은 바이너리를 다시 작성해 기존 서드 파티 라이브러리를 자동으로 이전하여 AndroidX를 사용합니다. 이 플래그를 지정하지 않으면 Android 플러그인은 기본적으로 false로 설정합니다. android.useAndroidXtrue로 설정한 경우에만 이 플래그를 true로 설정할 수 있고 그러지 않으면 빌드 오류가 발생합니다.

      자세한 내용은 AndroidX 개요를 읽어보세요.

  • 새로운 코드 축소기 R8: R8은 ProGuard를 대체하는 코드 축소 및 난독화를 위한 새로운 도구입니다. 프로젝트의 gradle.properties 파일에 다음 코드를 포함하여 R8의 미리보기 버전을 사용할 수 있습니다.

            android.enableR8 = true
            
            android.enableR8 = true
            

동작 변경사항

  • D8을 사용한 디슈가링이 기본적으로 사용 설정됩니다.

  • 이제 AAPT2가 Google의 Maven 저장소에 있습니다. AAPT2를 사용하려면 아래와 같이 build.gradle 파일에 google() 종속 항목이 있는지 확인하세요.

              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
              buildscript {
                    repositories {
                        google() // here
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:3.2.0'
                    }
                }
                allprojects {
                    repositories {
                        google() // and here
                        jcenter()
                }
              
  • 이제 네이티브 멀티덱스가 기본적으로 사용 설정됩니다. 이전 버전의 Android 스튜디오에서는 Android API 수준 21 이상을 실행하는 기기에 앱의 디버그 버전을 배포할 때 네이티브 멀티덱스를 사용 설정했습니다. 이제 기기에 배포하든 출시용 APK를 빌드하든 Android Gradle 플러그인이 minSdkVersion=21 이상을 설정한 모든 모듈에 네이티브 멀티덱스를 사용 설정합니다.

  • 이제 플러그인이 최소 버전의 protobuf 플러그인(0.8.6), Kotlin 플러그인(1.2.50), Crashlytics 플러그인(1.25.4)을 시행합니다.

  • 이제 기능 모듈 플러그인 com.android.feature가 모듈 이름을 지정할 때 문자, 숫자, 밑줄만을 사용하게 합니다. 예를 들어 기능 모듈 이름에 대시가 포함된 경우 빌드 오류가 발생합니다. 이 동작은 동적 기능 플러그인의 동작과 일치합니다.

버그 수정

  • 이제 JavaCompile이 데이터 결합이 있는 프로젝트에서 캐시 가능합니다. (문제 #69243050)
  • 데이터 결합이 있는 라이브러리 모듈에 관한 컴파일 방지가 개선됩니다. (문제 #77539932)
  • 일부 예기치 않은 빌드 오류로 인해 이전 버전에서 configure-on-demand를 사용 중지한 경우 이제 이를 다시 사용 설정할 수 있습니다. (문제 #77910727)