page.title=Java 8 언어 기능 page.keywords="android N", "Java 8", "Jack" @jd:body
  1. 지원되는 Java 8 언어 기능 및 API
  2. Java 8 기능 및 Jack 툴체인 활성화

Android N은 Java 8 언어 기능을 지원합니다. 이 기능은 Android N을 대상으로 하는 앱을 개발할 때 사용될 수 있습니다. 이 페이지에서는 Android N Preview에서 지원되는 새로운 언어 기능, 프로젝트를 적절히 설정하여 언어 기능을 사용하는 방법 그리고 발생할 수도 있는 알려진 문제에 대해 설명합니다.

이 기능을 사용하려면 Android Studio 2.1 및 Android N Preview SDK를 다운로드하고 설치해야 합니다. 여기에는 필수 Jack 툴체인과 업데이트된 Android Plugin for Gradle이 포함되어 있습니다. 아직 Android N Preview SDK를 설치하지 않았다면 Android N용 개발 설정을 참조하세요.

참고: 새로운 Java 8 언어 기능을 사용하는 것은 Android N 플랫폼을 대상으로 하는 앱 개발에 반드시 필요한 것은 아닙니다. Java 8 언어 기능으로 코드를 작성하고 싶지 않다면, 프로젝트의 원본 및 대상 호환성 값을 Java 7로 설정할 수 있지만 Android N 플랫폼용으로 빌드하려면 JDK 8로 컴파일해야 합니다.

지원되는 Java 8 언어 기능 및 API

Android는 현재 모든 Java 8 언어 기능을 지원하는 것은 아닙니다. 그러나 Android N Preview를 대상으로 하는 앱을 개발할 때 이제 다음 기능을 이용할 수 있습니다.

참고: 이전 버전의 Android에서 람다 식 및 메서드 참조를 테스트하려면 {@code build.gradle} 파일로 이동하고 {@code compileSdkVersion} 및 {@code targetSdkVersion}을 23 이하로 설정하세요. 이러한 Java 8 기능을 사용하려면 Jack 툴체인을 활성화해야 합니다.

또한, 현재 다음과 같은 Java 8 언어 기능 API를 사용할 수 있습니다.

Java 8 기능 및 Jack 툴체인 활성화

새로운 Java 8 언어 기능을 사용하려면 또한 새로운 Jack 툴체인을 사용해야 합니다. 이 새로운 Android 툴체인은 Android에서 읽을 수 있는 Dex 바이트코드로 Java 언어 소스를 컴파일하고, 자체 {@code .jack} 라이브러리 형식이 있으며, 단일 도구로는 가장 많은 툴체인 기능을 제공합니다(리패키징, 축소, 난독화, 멀티덱스).

다음은 Android DEX 파일을 빌드하는 데 사용되는 두 개의 툴체인을 비교한 것입니다.

Gradle 구성

프로젝트에서 Java 8 언어 기능과 Jack을 활성화하려면 모듈 수준의{@code build.gradle} 파일에 다음을 입력합니다.

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

알려진 문제

Instant Run은 현재 Jack과 호환되지 않으며 새로운 툴체인을 사용하는 동안 비활성화됩니다.

Jack이 앱을 컴파일할 때 중간 클래스 파일을 생성하지 않으므로, 이들 파일에 의존하는 도구는 현재 Jack과 호환되지 않습니다. 이러한 도구의 예는 다음과 같습니다.

Jack을 사용하는 동안 다른 문제를 발견하면 버그를 보고해주세요.