Android Studio Arctic Fox와 JDK 11의 도입

이번 포스팅에서는 Android Studio Arctic Fox와 JDK 11의 도입에 관한 내용을 다루어보도록 하겠습니다.

# Android Gradle 7.0.0 도입

2021년 7월 말에 Android Studio의 버전이 Arctic Fox|2020.3.1 로 올라갔습니다. 그 과정에서 Android Gradle plugin의 버전도 4.2.0에서 7.0.0으로 올라갔는데요, Android Gradle 7.0.0의 사양은 다음과 같습니다.

Default Version
Gradle 7.0.2
SDK Build Tools 30.0.2
NDK 21.4.7075529
JDK 11

이번 플러그인의 가장 큰 변화중 하나는 디폴트 JDK 버전을 1.8에서 11로 올린점입니다. Java SE 8은 2014년 3월에 발표되었는데, 2019년 1월에 무료 업데이트가 종료되고 현재는 유료 업데이트만을 지원하고 있습니다. 따라서 구글에서는 사실상 기능지원이 종료된 8을 버리기로 결정한 것으로 보입니다.

# Java 8에서 11로 변경된 이유

그렇다면 왜 11버전이 선택되었을까요? 11은 2018년 9월 발표된 버전으로 8과 비교하면 기술적으로 많은 발전이 있었습니다. 그 내용에 대해서는 Microsoft의 Java 11로 전환해야 하는 이유를 참조하시면 좋을 것 같습니다.

Android Studio에서 Java 11의 기능을 이용하고 싶다면 build.gradle을 다음과 같이 수정하면 됩니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

또한 11은 LTS(Long Term Support)가 적용되었으며 ADOPTIUM 으로부터 오픈소스 빌드인 OpenJDK를 제공받을 수 있는 버전이기도 합니다. OpenJDK는 Oracle JDK의 기능을 모두 구현하면서도 무료로 사용할 수 있는 JDK라고 생각하시면 됩니다.

이러한 이유들로 인해 구글에서는 Android Gradle의 JDK 디폴트 버전을 11로 채용하게 된 것으로 보입니다. synk에서 발표한 JVM Ecosystem Report 2020에 따르면 현재 Java SE 8 사용자는 64%, 11 사용자는 25%라고 하는데 이번 결정으로 11버전의 사용자가 빠르게 증가할 것 같네요.

# Android Studio의 빌드 실패

현재 Arctic Fox에서 New Project로 생성하는 프로젝트의 Android Gradle은 7.0.0 버전이 적용되도록 되어 있습니다.

1
2
3
dependencies {
    classpath "com.android.tools.build:gradle:7.0.0"
}

근데 문제는 프로젝트의 JDK가 1.8로 지정되었을 경우 Gradle의 디폴트 버전과 맞지 않으므로 다음과 같은 메시지를 뿜으며 빌드에 실패하게 됩니다.

1
2
3
4
5
6
7
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.

# JDK 버전 변경

이 문제를 해결하기 위해서는 프로젝트가 사용하는 JDK 버전을 변경해주면 됩니다.

안드로이드 스튜디오 4.2에는 이미 JDK 11이 내장되어 있지만 여기서는 패키지 버전관리가 용이한 brew를 통해 JDK 11을 새로 설치하여 사용하는 법을 소개하겠습니다.

우선 brew로 시스템에 OpenJDK 11을 설치해 줍니다.

1
2
$ brew tap AdoptOpenJDK/openjdk
$ brew install --cask adoptopenjdk11

설치된 JDK의 위치는 /usr/libexec/java_home -V 명령으로 확인할 수 있습니다.

다음은 JAVA_HOME 파라미터를 변경하기 위해 ~/.zshrc에 다음 행을 추가합니다.

1
2
3
4
5
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
export PATH=${PATH}:$JAVA_HOME/bin

// 변경사항 반영
$ source ~/.zshrc

마지막으로 Android Studio 메뉴에서 Preferences > Build, Execution, Deployment > Build Tools > Gradle로 들어가 Gradle JDK 항목을 Android Studio java home으로 변경해 주면 됩니다.

Licensed under CC BY 4.0
Built with Hugo
Theme Stack designed by Jimmy