본문 바로가기
Android 개발/Android

CompileSdkVersion, MinSdkVersion, TargetSdkVersion 그리고 BuildToolsVersion

by Developer88 2017. 3. 12.
반응형

안드로이드 작업을 하면서, 최신버전으로 라이브러리로 업데이트하는일이 많은데요.

특히나, 구글에서 제공해주는 design, recyclerview, cardview 같은 라이브러리를 추가해보면,

계속 최신버전으로 업데이트 되는데요.

 

그런데, 이상하게 build.gradle에 최신버전으로 위의 라이브러리들을 추가하면, 아래이미지와 같이 빨간줄이 있는 경우가 있습니다.

 

 

뭐가 문제지? 하고 줄이 간곳에 마우스를 올려보니 아래와 같이 나왔습니다.

compileSdkVersion이 23인데, 제가 25버전의 라이브러리를 추가했다 이거죠.

 

 

"음. 그럼, compileSdkVersion을 25로 올리면 되겠구나" 하는 생각이 들긴 하는데요.

그렇다면, compileSdkVersion이라고 하는 건 뭘까요?

 

 

1. compileSdkVersion

 

compileSdkVersion은 말 그대로, compile시에 사용하는 sdk버전이라는 것입니다.

위의 에러가 났을 때의 현재 버전은 아래이미지와 같은데요.

빨간줄이 그어진 위 상황을 보면, 새로 추가한 라이브러리는 25.1.0인데,

compile시에 사용하는 버전은 23이니까, 않맞았다는 거죠

그럼이거 간단한 문제군요. compileSdkVersion 25로 바꾸겠습니다.

 

 

 

네, 이제야 원래있던 빨간줄은 사라졌습니다.

그런데,  이번에는 문제가 없던 appcompat라이브러리와 support라이브러리가, 

compileSdkVersion과 않맞다고 빨간줄을 보여주는 군요.

 

 

appcompat 과 support 라이브러리도 최근버전으로 수정해줬더니, 이제 저를 괴롭히던 빨간 줄이 사라졌습니다.

 

 

그런데, 잠깐만요.

위에 있던 buildToolsVersion 은 어떨까요? 23.0.1인데, 저대로 놓아두어도 괜찮은걸까요?

그리고, targetSdkVersion도 찜찜한데요. 

아래에서 하나씩 보도록 하겠습니다.

 

 

 

 

2. buildToolsVersion

 

buildToolsVersion도 예상하실수 있겠지만, build 툴의 버전을 가르키는데요.

그런데, buildToolsVersion의 최신버전은 어떻게 알 수 있을까요?

그냥 찍어서, compileSdkVerson하고 맞추면 될까요?

현재 compileSdkVerson 을 최신인 25.1.0으로 해놓았는데,

buildToolsVersion이 23.0.3이니 업데이트가 않된 것 같은 느낌도 드는데요.

 

이 불안함을 지우고자 할때, 심플한 방법으로, 안드로이드 스튜디오 UI 를 이용하는 방법이 있습니다.

여기서 사용하는 것은, 저희가 dependencies를 검색해서 추가할 때 사용하던 Project Structure팝업인데요.

(맥에서는 <Cmd + ;>단축키로 접근할 수 있습니다.)

여기서 app> Properties를 보시면, build Tools Version을 선택할 수 있습니다.

 

여기에서 선택할 수 있는 버전들은, 안드로이드 스튜디오 업데이트때 다운로드 해놓은 버전들일 거구요.

따라서, 안드로이드 스튜디오에서 각종 업데이트사항을 최신으로 해놓으시면, 자연히 여기서 선택할 수 있는 버전들에도 최신버전이 포함될 수 있습니다.

 

 

 

3. targetSdkVersion

 

이제 , 목표로 하는 Sdk정도로 봐야할까요? 타겟팅하는 SdkVersion이라는 뜻인데요.

선택할 수 있는 targetSdkVersion의 종류도 UI의 도움을 받아볼수 있습니다.

힌트는 Flavors 탭에 있는데요.

아래 이미지를 보시면, 7.1인 nougat 버전까지도 선택할 수 있다는 걸 알 수 있습니다.

(업데이트 설치상황에 따라 달라지는 값입니다.)

 

 

 

그런데, 여기서도 최신버전을 선택해야 할까요?

target으로 하는 SdkVersion이라는 것은, 

그 SdkVersion 에 최적화 되었다라고 볼 수 있는 것이구요. 테스트가 되었다고 볼 수도 있습니다.

그래서, Api21의 기능과 UI를 기준으로 앱의 디자인과 개발이 된 상태라면,

굳이 최신인 API25를 기준으로 하는 것은 오히려 좋지 않을 수 있습니다.

개발자가 예상하지 못하는 UI나 기능들을 API25의 플랫폼을 사용하는 유저가 접하게 될수도 있기 때문입니다.

 

따라서 이 targetSdkVersion 에서만큼은 최신버전이 아니라, 최적의 버전을 선택해서 사용해야 한다가 답인것 같습니다.

물론, Android가 개발해놓은 최신의 UI와 기능등을 사용하는 API들에 최적화시켜서 개발을 한다면, 

targetSdkVersion 도 최신버전을 사용할 수 있을 것이구요.

이것이 가장 이상적인 방법임에는 틀림이 없는 것 같습니다.

 

 

4. minSdkVersion

 

마지막으로 minSdkVersion 에 대해서 알아볼텐데요.

앱이 돌아갈 수 있는 최소한의 버전을 말합니다.

저는 API 15버전으로 잡았는데요,

사실 이 옵션은 안드로이드 스튜디오에서 프로젝트를 생성할 때, 물어보는 옵션입니다.

디폴트값이 저 값이어서, 아무것도 만지지 않으면 15로 설정되게 됩니다.

 

아래 이미지에서, 앱생성 초기의 UI를 잠깐 보시죠.

친절하게도, API 15버전 이후의 모든 버전을 지원하면, 97.4%의 안드로이드 기기에서 사용이 가능하다는 설명까지 해놓았군요.

물론, 초기에 설정한 값과 다르게 하고자 한다면, build.gradle파일에서 minSdkVersion를 수정하시면 되는 거구요.

 

 

728x90

댓글