Android targetSdkVersion vs compileSdkVersion 차이 완벽 정리 (+minSdk, 설정 팁)

✨ 개요

minSdk, targetSdk, compileSdk는 빌드/호환성에 핵심인 설정이지만 헷갈리기 쉽습니다.
이 글에서는 targetSdk와 compileSdk의 역할/영향/베스트 프랙티스를 중심으로 한 번에 정리합니다.


요약

둘은 같게 맞추는 것이 일반적이지만 의미가 다릅니다.
compileSdk는 “SDK 헤더”, targetSdk는 “런타임 정책/동작”에 영향.


1. 세 가지 설정의 역할

✅ minSdkVersion

✅ compileSdkVersion

✅ targetSdkVersion


2. compileSdk가 낮으면 생기는 문제

컴파일은 최신으로, 런타임 호환은 minSdk/조건부 코드로 해결하는 게 기본 전략.


3. targetSdk가 낮으면 생기는 문제

출시/유지보수 중인 앱은 targetSdk 상향이 필수 과제입니다.


4. 런타임 동작 예시 (왜 targetSdk가 중요?)

항목 낮은 targetSdk 높은 targetSdk(해당 버전 이상)
포그라운드 서비스, 백그라운드 제한 느슨 더 엄격한 제한 적용
권한 모델 변경(예: 알림 권한) 기존 동작 새 권한 요구
저장소 정책(Scoped Storage) 레거시 경로 허용 스코프드 스토리지 강제
Job/Alarm, 배터리 최적화 기존 정책 새 정책/제약 적용

즉, 동일 APK라도 targetSdk에 따라 런타임 정책이 달라질 수 있음.


5. 마이그레이션 체크리스트 (targetSdk 상향 시)


6. compileSdk = “어떤 SDK로 컴파일할지” (코드 가능 범위)



Related Posts