Android Gradle 플러그인 2.2.0(2016년 9월)

종속 항목:
신규:
  • 성능 개선 및 새로운 기능을 포함하는 Gradle 2.14.1을 사용하고 Gradle 데몬을 사용할 때 로컬 권한 에스컬레이션을 허용하는 보안 취약점을 해결합니다. 자세한 내용은 Gradle 출시 노트를 참고하세요.
  • externalNativeBuild {} DSL을 사용하여 이제 Gradle로 네이티브 소스에 연결하고 CMake나 ndk-build를 사용하여 네이티브 라이브러리를 컴파일할 수 있습니다. 네이티브 라이브러리를 빌드한 후에 APK로 패키징합니다. Gradle로 CMake 및 ndk-build를 사용하는 방법에 관한 자세한 내용은 프로젝트에 C 및 C++ 코드 추가를 읽어보세요.
  • 명령줄에서 빌드를 실행하면 이제 Gradle이 누락된 SDK 구성요소나 프로젝트가 종속하는 업데이트를 자동 다운로드하려고 시도합니다. 자세한 내용은 Gradle로 누락된 패키지 자동 다운로드를 읽어보세요.
  • 새로운 실험용 캐싱 기능으로 Gradle이 사전 덱싱된 라이브러리 버전을 사전 덱싱, 저장, 재사용하여 빌드 시간을 단축할 수 있습니다. 이 실험용 기능 사용에 관한 자세한 내용은 빌드 캐시 가이드를 읽어보세요.
  • 작업 한 번으로 압축과 서명, zipaligning을 처리하는 새로운 기본 패키징 파이프라인을 채택해 빌드 성능을 개선합니다. gradle.properties 파일에 android.useOldPackaging=true를 추가하여 이전 패키징 도구를 사용하도록 되돌릴 수 있습니다. 새로운 패키징 도구를 사용하는 동안 zipalignDebug 작업은 사용할 수 없습니다. 그러나 createZipAlignTask(String taskName, File inputFile, File outputFile) 메서드를 호출하여 직접 그 작업을 생성할 수 있습니다.
  • 이제 APK 서명이 기본 JAR 서명 외에도 APK 서명 체계 v2를 사용합니다. 모든 Android 플랫폼이 그 결과로 발생하는 APK를 허용합니다. 서명 후 이러한 APK를 수정하면 v2 서명이 무효화되고 기기에 설치되지도 않습니다. 이 기능을 사용 중지하려면 모듈 수준 build.gradle 파일에 다음을 추가하세요.

    Groovy

    android {
      ...
      signingConfigs {
        config {
          ...
          v2SigningEnabled false
        }
      }
    }
          

    Kotlin

    android {
      ...
      signingConfigs {
        create("config") {
          ...
          v2SigningEnabled = false
        }
      }
    }
          
  • 멀티덱스 빌드의 경우 이제 ProGuard 규칙을 사용하여 Gradle이 앱의 기본 DEX 파일로 컴파일해야 하는 클래스를 결정할 수 있습니다. 앱을 시작할 때 Android 시스템이 기본 DEX 파일을 먼저 로드하기 때문에 시작 시 특정 클래스를 기본 DEX 파일로 컴파일하여 우선순위를 정할 수 있습니다. 기본 DEX 파일용으로 특별히 ProGuard 구성 파일을 생성한 후 buildTypes.multiDexKeepProguard를 사용하여 구성 파일의 경로를 Gradle로 전달합니다. 이 DSL을 사용하는 것은 buildTypes.proguardFiles를 사용하는 것과 다르며 앱의 일반적인 ProGuard 규칙을 제공하지만 기본 DEX 파일의 클래스를 지정하지는 않습니다.
  • android:extractNativeLibs 플래그 지원을 추가하여 기기에 앱을 설치할 때 앱의 크기를 줄일 수 있습니다. 앱 매니페스트의 <application> 요소에서 이 플래그를 false로 설정하면 Gradle이 APK로 압축되지 않고 정렬된 버전의 네이티브 라이브러리를 패키징합니다. 이로써 설치하는 동안 PackageManager가 네이티브 라이브러리를 APK에서 기기의 파일 시스템으로 복사할 수 없고 앱의 델타 업데이트 용량이 적어지는 추가 혜택이 있습니다.
  • 이제 제품 버전에 versionNameSuffixapplicationIdSuffix를 지정할 수 있습니다. (문제 59614)
변경사항:
  • 이제 getDefaultProguardFile가 Gradle용 Android 플러그인이 제공하는 기본 ProGuard 파일을 반환하고 더 이상 Android SDK의 파일을 사용하지 않습니다.
  • Jack 컴파일러 성능 및 기능을 개선합니다.
    • testCoverageEnabledtrue로 설정할 때 이제 Jack이 Jacoco 테스트 적용 범위를 지원합니다.
    • 주석 프로세서 지원을 개선합니다. 클래스 경로의 주석 프로세서(예: compile 종속성)가 빌드에 자동으로 적용됩니다. 모듈 수준 build.gradle 파일에서 javaCompileOptions.annotationProcessorOptions {} DSL을 사용하여 빌드에 주석 프로세서를 지정하고 인수를 전달할 수도 있습니다.

      Groovy

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className 'com.example.MyProcessor'
              // Arguments are optional.
              arguments = [ foo : 'bar' ]
            }
          }
        }
      }
          

      Kotlin

      android {
        ...
        defaultConfig {
          ...
          javaCompileOptions {
            annotationProcessorOptions {
              className = "com.example.MyProcessor"
              // Arguments are optional.
              arguments(mapOf(foo to "bar"))
            }
          }
        }
      }
          

      컴파일 시 주석 프로세서를 적용하고 APK에는 이를 포함하지 않으려면 annotationProcessor 종속 항목 범위를 사용하세요.

      Groovy

      dependencies {
          compile 'com.google.dagger:dagger:2.0'
          annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          

      Kotlin

      dependencies {
          implementation("com.google.dagger:dagger:2.0")
          annotationProcessor("com.google.dagger:dagger-compiler:2.0")
         // or use buildVariantAnnotationProcessor to target a specific build variant
      }
          
    • 설정할 수 있는 매개변수 목록을 보려면 명령줄에서 다음을 실행합니다.

      java -jar /build-tools/jack.jar --help-properties
      

    • 기본적으로 Gradle 데몬의 힙 크기가 1.5GB 이상이면 이제 Jack이 Gradle과 같은 프로세스에서 실행됩니다. 데몬 힙 크기를 조정하려면 다음을 gradle.properties 파일에 추가하세요.

      # This sets the daemon heap size to 1.5GB.
      org.gradle.jvmargs=-Xmx1536M