Android 관련 모듈을 쓰거나 앱 설정을 하다보면 다음 세가지 키워드가 나옵니다. minSdkVersion, targetSdkVersion과 compileSdkVersion. 가만히 보니 이것에 대해서는 적당히 알고만 있었네요. 그래서 좀 찾아보고 정리해봅니다.
minSdkVersion
iOS 설정에서의 Deployment target
과 비슷한 효과가 있습니다. 이 앱이 지원하는 가장 낮은 OS version을 의미합니다. 이 설정 값보다 낮은 OS에서는 이 앱을 설치 할 수 조차 없습니다.
targetSdkVersion
사실 이 targetSdkVersion 때문에 찾아본건데요. 이 버전 지정은 앱의 실제 동작과 관련이 있습니다. 특정 버전에서 지원하는 방식으로 앱을 동작하게 만들려면 targetSdkVersion을 해당 version으로 지정해야합니다. 예를 들어서 25버전에서 보안 문제가 있어서 해당 사항이 26버전에서 해결되었다면 targetSdkVersion을 26버전으로 해야합니다. targetSdkVersion 지정 값에 따라 보안 및 성능이 달라질 수 있습니다. google play에 앱을 올리려면 구글 플레이가 지정한 targetSdkVersion 이상으로 지정해야만 가능합니다. 구글이 말하는 이 이유는 보안 및 성능에 최적화된 최신 API를 기반으로 앱이 만들어지고, 사용자가 그 혜택을 온전히 누릴 수 있도록 보장하기 위한 것
이라고 합니다. (출처)
compileSdkVersion
앱이 어떻게 동작하는지와는 무관합니다. 이 버전을 바꿨다고 앱의 동작이 달라지지 않습니다. 이 버전은 항상 최신 버전을 쓰는 것을 추천합니다. 왜냐면 컴파일 타임에 보다 더 자세한 정보를 줄 수 있습니다. 예를 들어 이 compileSdkVersion은 가능한 최신 버전을 설정해야 컴파일 타임에 가장 최신의 정보를 바탕으로 deprecated된 API를 알려줄 수 있습니다.
따라서 이 셋은 다음 공식을 성립해야합니다.
minSdkVersion <= targetSdkVersion <= compileSdkVersion