Android Stuido에서 앱레벨 build.gradle (Module:app)을 보면 아래와 같이 현재 앱의 SDK를 설정하는 부분이 있다.
android {
compileSdkVersion 32
buildToolsVersion "30.0.3"
defaultConfig {
applicationId "com.my.app"
minSdkVersion 23
targetSdkVersion 32
...
여기서 각각의 값들이 의미하는 내용을 알아보자.
minSdkversion은 '앱을 실행하는데 필요한 최소 API 레벨'을 지정하는 것이다.
실제로 기기의 OS버전이 minSdkversion보다 낮은 경우 앱이 설치되지 않는다.
targetSdkversion은 '앱이 기기에서 실행 시 실제로 사용되는 Android API 레벨'을 지정하는 것이다.
실제 컴파일에는 관여하지 않고 앱이 실행하는데 targetSdkVersion으로 인해 실제로 영향을 준다.
(런타임에 영향)
보통 지정한 버전까지 최적화 및 테스트 했음을 의미한다.
targetSdkVersion이 중요한 또 다른 이유는
Google 스토어에 앱 업로드 최소로 요구하는 API 레벨이 있어서 해당 레벨을 맞추지 못하면 앱 심사에서 반려가 된다.
targetSdkVersion을 지정하더라도 실제 앱이 설치된 기기의 OS버전은 다를 수가 있다 각 경우의 대해서 알아보자.
1. OS버전 > targetSdkVersion
이 경우 기기는 안드로이드 API 30에 포함된 기능을 모두 사용 할 수 있다. 하지만 앱의 targetSdkVersion이 28이므로 기기는 API 28을 기반으로 동작한다.
2. OS버전 == targetSdkVersion
이 경우 OS버전과 targetSdkVersion이 같으므로 API 30을 기반으로 앱이 동작되며 API 30에서 제공하는 기능을 기기에서 모두 사용할 수 있다.
3. OS버전 < targetSdkVersion
이 경우 앱은 기기의 OS 버전인 API 28 기반으로 동작한다.
compileSdkVersion은 '컴파일 시 사용되는 Android API 레벨이다.'
따라서 코드 작성 시 사용할 수 있는 API의 범위는 compileSdkVersion에 따라 다르게 된다.
그 밖의 특징은