이번 편의 목표: 앱 모듈의 build.gradle.kts에서 안드로이드 17 API를 컴파일하고, 동작 규칙은 아직 켜지 않는 상태를 만듭니다.

숫자는 앱 모듈에 있습니다. 프로젝트 루트의 빌드 파일과 모듈 파일을 구분합니다. 아래는 모듈 파일입니다. 패키지 이름은 예시입니다.

Kotlin
android {
    namespace = "com.thinktree.library"
    compileSdk = 37

    defaultConfig {
        applicationId = "com.thinktree.library"
        minSdk = 26
        targetSdk = 36
        versionCode = 1
        versionName = "1.0"
    }
}

compileSdk = 37은 02편에서 설치한 플랫폼을 컴파일러가 읽게 합니다. targetSdk = 36은 2026년 8월 31일 이후 휴대전화 앱의 Play 제출 조건을 만족하면서, API 37 전용 동작은 아직 켜지 않습니다. 큰 화면 대응과 로컬 네트워크 권한 코드를 준비한 뒤에 이 숫자만 37로 바꿉니다.

Groovy 빌드 파일을 쓰는 프로젝트도 같은 속성 이름입니다. compileSdk와 targetSdk에 같은 정수를 넣습니다.

안드로이드 17에만 있는 API를 호출하는 줄은 기기가 그 API를 가진 경우에만 실행되게 나눕니다. 예를 들어 SDK_INT 검사가 없는 호출은 minSdk 26 기기에서 설치는 되어도 실행 때 없습니다.

Kotlin
if (Build.VERSION.SDK_INT >= 37) {
    // 안드로이드 17에서만 제공하는 API
}

스튜디오의 Android SDK Upgrade Assistant는 이 버전으로 올리며 마주치는 동작 변경을 빌드 파일 근처에서 안내합니다. 안내를 켠 상태에서도 targetSdk를 바로 37로 두지 않습니다. 다음 편의 호환 테스트를 먼저 통과합니다.

직접 해 보기

모듈을 동기화한 뒤, compileSdk가 37이 아닌 플랫폼을 가리키면 동기화가 실패하는지 확인하세요. 실패하면 02편의 플랫폼 설치를 다시 봅니다.

해설

동기화가 성공하면 컴파일러는 API 37을 알고, 앱의 동작 규칙은 아직 API 36입니다. targetSdk 한 줄을 37로 바꾸기 전에는 타깃 전용 변경이 적용되지 않습니다.