안드로이드 스튜디오 Java 버전 변경(Gradle, JDK, AGP)
이 글은 Tistory에서 이전된 포스팅입니다. 원본은 여기에서 확인할 수 있습니다.
안드로이드 스튜디오로 개발할 때, 다음 요소들의 버전을 맞춘다.
- Gradle
- AGP( Android Gradle Plugin )
- Gradle JDK & Java Version
gradle-wrapper.properties (Gradle)
1
2
3
4
5
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
해당 파일에서 Gradle Version을 수정할 수 있다. (위 코드에서는 8.7)
https://docs.gradle.org/current/userguide/compatibility.html
Gradle은 JVM 위에서 동작하고, Gradle JDK에 따른 Gradle Version 호환성이 있다.
AGP( Android Gradle Plugin )
AGP는 Gradle(빌드 자동화 도구)을 기반으로 동작하는 안드로이드 프로젝트 플러그인이다.
따라서, Gradle Version에 따른 AGP Version 호환성이 있다.
libs.versions.toml
1
2
3
4
5
6
7
8
9
10
11
12
[versions]
agp = "8.5.2"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
material = "1.12.0"
constraintlayout = "2.1.4"
navigationFragment = "2.7.7"
navigationUi = "2.7.7"
...
플러그인 DSL 경우, libs.version.toml 파일에서
Groovy의 경우, build.gradle(app) 파일에서 AGP Version을 수정할 수 있다.
안드로이드 스튜디오에서도 가능하다.
(window) File → Project Structure → Project → AGP Version
Gradle JDK & Java Version
Gradle 빌드를 실행할 JDK를 선택하려면
(window) File → Settings → Build, Execution, Deployment → Build Tools → Gradle
build.gradle (app)
1
2
3
4
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
다음 gradle 설정은 소스 코드 컴파일 시 규격을 정의한다.
예를 들어 아래 설정과 같다면
Gradle JDK = 21
sourceCompatibility = 11
targetCompatibility = 17
Gradle이 빌드하는 동안 컴파일, 테스트, 패키징 등을 처리할 때 Java 21 환경에서 작업을 한다. (gradle jdk)
소스 코드 컴파일 시 Java 11 문법을 사용한다. (source)
생성된 바이트 코드가 Java 17 JVM에서만 실행가능하도록 만든다. (target)
.class 파일의 major verison이 55(java 11) => 61(java 17)로 바뀜
gradle jdk는 gradle build에 대한 자바 버전으로 위 표와 관련이 없다. 위 표는 source/target Compatibility와 관련이 있다.
android api에 따라 필요한 agp가 있고, agp가 지원하는 java 버전이 정해져 있다. 15(API 35)도 java 17을 업데이트한다.
https://developer.android.com/about/versions/15/summary?utm_source=chatgpt.com&hl=ko
프로젝트를 재현하거나 파악한다면, Gradle을 먼저 보고 AGP와 Gradle JDK를 맞추면 된다.


