SdkVersion 관계
2021. 4. 23. 18:20ㆍAndroid/Gradle
반응형
compileSdkVersion
- Gradle에 어떤 안드로이드 SDK 버전으로 앱을 컴파일 할 것인지 알려줍니다 . 즉, 지원할 수 있는 가장 높은 API 버전을 의미합니다.
해당 SDK 버전에 포함된 API를 사용할 수 있다는 것을 의미합니다. - 컴파일시에만 적용되므로 런타임동안에는 영향을 미치지 않습니다.
- 항상 최신 버전의 SDK로 지정하는 것이 좋습니다.
- import문으로참조되는 클래스나 메소드를 찾을 때 어떤 버전의 SDK에서 찾을 것인가를 결정해줍니다.
minSdkVersion
- minSdkVersion보다 낮은 API 버전 앱은 설치할 수 없습니다.
- minSdkVersion보다 높은 API를 사용하면 lint에서 경고를 띄워 알려줍니다.
- Support Library나 Google Play Service는 자체 minSdkVersion을 가지므로 이 중 가장 높은 버전으로 맞춰야 합니다.
targetSdkVersion
- minSdkVersion 이상에서 지원하는 어떤 기능을 사용하고자 위함입니다.
- 실제 컴파일에는 관여하지 않음. 빌드시 버전을 낮추어도 원하는 클래스의 메소드를 컴파일 할 수 있습니다.
- 지정한 버전까지 앱을 테스트 했음을 의미합니다. 기기가 Nougat(API 24)더라도 target이 Marshmellow(API 23)이라면 Marshmellow 단말기까지는 정상동작 됨을 의미하며 Nougat기기는 정상적으로 돌아갈지 확신할 수 없습니다. 상위호환되는 API로 개발을 했다면 아마 잘 돌아갈 것 입니다.
- 즉 targetSdkVersion이 달라야 앱의 행동 로직이 달라지므로, 안드로이드가 상위호환성을 제공할 수 있습니다.
- Marshmellow(API 23)에서 도입된 런타임 퍼미션(runtime permission model)은 targetSdkVersion 을 API 23으로 지정해야 적용됩니다.
- compileSdkVersion을 25로하고 targetSdkVersion을 21로하면 Marshmellow 이상 단말기에서 런타임 퍼미션이 Marshmellow 이전처럼 강제 허용되어 있습니다. 허용을 해제하려고하면 이전 버전으로 빌드된 앱이라고 메시지가 출력됩니다.
- targetSdkVersion이 22이라면 22이후 버전에서 지원되는 기능이 제외된 앱이 만들어지므로 런타임 퍼미션을 사용 못하는 것입니다.
세 종류의 SDK 버전의 관계
minSdkVersion <= targetSdkVersion <= compileSdkVersion
안정적인 앱을 원한다면
minSdkVersion <= targetSdkVersion == compileSdkVersion
출처: https://duzi077.tistory.com/141 [개발하는 두더지]
반응형
'Android > Gradle' 카테고리의 다른 글
Gradle 파일(settings.gradle / build.gradle) 및 사용법 알아보기 (0) | 2024.03.16 |
---|---|
Gradle 개념 / 특징 및 Gradlew / 사용법 알아보기 (1) | 2024.03.15 |
Firebase Performance 서비스 추가 Gradle 설정 과정 참고(전이의존성 해결) (1) | 2024.03.12 |
Submodule Proguard 적용 (0) | 2023.10.19 |
Build 구성 (0) | 2021.04.23 |