반응형

Gradle 8.0 이상에서는 이전 버전과 비교해 여러 사항들이 변경되었으며, 특히 안드로이드 빌드 설정에 직접적인 영향을 미치는 요소들이 많다. 몇 가지 주요 변경 사항은 다음과 같다.

 

1. namespace 선언 필수

  • 변경 사항: Gradle 8.0과 Android Gradle Plugin(AGP) 7.3.0 이상에서는 AndroidManifest.xml에서 패키지 이름을 설정하는 대신 build.gradle 파일에서 namespace 속성을 명시적으로 선언해야 합니다.
  • 이유: 이 변경 사항은 Android Gradle Plugin의 개선된 네임스페이스 지원에 따른 것으로, 더 나은 빌드 속도와 코드 분리 지원을 위해 도입되었습니다.
  • 예시:
android {
    namespace 'com.sample.test'
}

 

2. targetSdkVersion이 없어짐

  • 변경 사항: targetSdkVersion은 더 이상 Gradle 파일에서 필수적으로 선언되지 않으며, Google Play가 자동으로 최신 버전으로 간주합니다. 하지만 여전히 하위 호환성을 유지하고 싶다면 명시적으로 설정하는 것이 좋습니다.
  • 이유: 이는 구글이 최신 플랫폼 기능을 활용하도록 유도하기 위한 변화이며, 최신 SDK 버전에 대한 자동 지원을 강화합니다.
  • 예시:
android {
    compileSdkVersion 34
    defaultConfig {
        minSdkVersion 21
        // targetSdkVersion 없어짐
    }
}

 

3. 종속성 관리 변화

  • 변경 사항: Gradle 8.0에서는 jcenter() 지원이 완전히 중단되었습니다. 따라서 mavenCentral() 또는 google()로 대체해야 합니다.
  • 이유: JFrog에서 JCenter 저장소를 더 이상 업데이트하지 않기 때문에 더 이상 사용할 수 없습니다​.
  • 예시:
repositories {
    google()
    mavenCentral()
}

 

4. Java Toolchain 강화

  • 변경 사항: Gradle 8.0에서는 Java toolchain을 보다 엄격하게 관리하며, 잘못된 toolchain 설정이 더 이상 허용되지 않습니다. 또한 자동으로 toolchain을 다운로드할 때 명시적으로 저장소(Repository)를 설정하지 않으면 오류가 발생합니다.
  • 이유: 이는 빌드 환경에서 더 나은 일관성과 신뢰성을 제공하기 위해 도입되었습니다​.
  • 예시:
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

 

5. 테스트 프레임워크 설정 변경

  • 변경 사항: 테스트 태스크에서 테스트 프레임워크를 설정한 후 추가적인 옵션을 변경하는 것이 더 이상 허용되지 않습니다. 테스트 프레임워크는 먼저 설정한 후 옵션을 설정해야 합니다.
  • 이유: 테스트 프레임워크 설정 후 옵션을 변경하는 것이 이전에는 설정을 덮어쓰는 문제가 있었기 때문에 이러한 변경이 적용되었습니다​.
  • 예시:
test {
    useJUnitPlatform {
        includeTags("unit")
    }
    options {
        // 테스트 옵션
    }
}

 

반응형
블로그 이미지

SKY STORY

,