Android SDK 설정 (tragetSdkVersion, minSdkVersion, compileSdkVersion)

Heathcliff·2022년 8월 10일
2

Android SDK 버전

목록 보기
2/2
post-custom-banner

안드로이드 SDK 설정

Android Stuido에서 앱레벨 build.gradle (Module:app)을 보면 아래와 같이 현재 앱의 SDK를 설정하는 부분이 있다.

android {
    compileSdkVersion 32
    buildToolsVersion "30.0.3"

	defaultConfig {
        applicationId "com.my.app"
        minSdkVersion 23
        targetSdkVersion 32
	
    ...

여기서 각각의 값들이 의미하는 내용을 알아보자.

  • complieSdkVersion
  • minSdkVersion
  • targetSdkVersion

minSdkVersion

minSdkversion은 '앱을 실행하는데 필요한 최소 API 레벨'을 지정하는 것이다.

실제로 기기의 OS버전이 minSdkversion보다 낮은 경우 앱이 설치되지 않는다.


targetSdkVersion

targetSdkversion은 '앱이 기기에서 실행 시 실제로 사용되는 Android API 레벨'을 지정하는 것이다.

실제 컴파일에는 관여하지 않고 앱이 실행하는데 targetSdkVersion으로 인해 실제로 영향을 준다.
(런타임에 영향)

보통 지정한 버전까지 최적화 및 테스트 했음을 의미한다.

targetSdkVersion이 중요한 또 다른 이유는
Google 스토어에 앱 업로드 최소로 요구하는 API 레벨이 있어서 해당 레벨을 맞추지 못하면 앱 심사에서 반려가 된다.

targetSdkVersion 및 기기 OS버전 비교

targetSdkVersion을 지정하더라도 실제 앱이 설치된 기기의 OS버전은 다를 수가 있다 각 경우의 대해서 알아보자.

1. OS버전 > targetSdkVersion

  • 기기의 OS 버전 : API 30
  • targetSdkVersion : API 28

이 경우 기기는 안드로이드 API 30에 포함된 기능을 모두 사용 할 수 있다. 하지만 앱의 targetSdkVersion이 28이므로 기기는 API 28을 기반으로 동작한다.

2. OS버전 == targetSdkVersion

  • 기기의 OS 버전 : API 30
  • targetSdkVersion : API 30

이 경우 OS버전과 targetSdkVersion이 같으므로 API 30을 기반으로 앱이 동작되며 API 30에서 제공하는 기능을 기기에서 모두 사용할 수 있다.

3. OS버전 < targetSdkVersion

  • 기기의 OS 버전 : API 28
  • targetSdkVersion : API 30

이 경우 앱은 기기의 OS 버전인 API 28 기반으로 동작한다.


compileSdkVersion

compileSdkVersion은 '컴파일 시 사용되는 Android API 레벨이다.'
따라서 코드 작성 시 사용할 수 있는 API의 범위는 compileSdkVersion에 따라 다르게 된다.

그 밖의 특징은

  • 컴파일 시에만 적용되므로 실제 실행하는 동안에는 (런타임) 영향을 미치지 않는다.
  • import 문으로 참조되는 클래스를 찾을 때 어떤 API 레벨에서 찾을건인지 결정한다.
  • 보통은 targetSdkVersion과 동일하게 설정한다.

profile
Android Developer
post-custom-banner

0개의 댓글