본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[android] minSdkVersion vs. targetSdkVersion

by 돼지왕 왕돼지 2017. 7. 29.
반응형

 [android] minSdkVersion vs. targetSdkVersion


http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

@targetapi, Android, Compile, Critical, default, holo theme, install, lint, maxsdk, maxsdkversion, minsdk, minSdkVersion, sdk version, targetapi, targetsdk, targetsdkversion, [android] minSdkVersion vs. targetSdkVersion, 기본, 상위 호환, 자동 삭제, 호환


-

minSdkVersion 은 해당 앱을 쓰기 위해 필요한 최소한의 API Level 을 명시한다.

minSdkVersion 이 맞지 않으면 android 가 install 자체를 허용하지 않는다.


이 값은 설정되지 않으면 1 로 기본 설정된다.



-

targetSdkVersion 은 앱이 타겟팅하고 있는 API Level 을 말한다.

targetSdkVersion 을 명시한다는 것은 minSdkVersion 이상에서 지원하는 어떤 기능을 사용하고자 위함이다.

새로운 기능이 critical 하다면 minSdkVersion 을 올리는 것이 추천된다.

만약 그렇게 critical 하지 않다면 API Level version 분기를 통해서 하위버전에서는 해당 기능을 사용하지 않도록 함으로서

하위 호환(?)을 맞춰줄 수 있다.


이 값은 이 버전 이후의 상위 호환은 하지 않는다는 것도 이야기한다.


이 값은 설정되지 않으면 minSdkVersion 과 같은 버전으로 설정된다.



-

targetSdkVersion 이 실제 compile 에는 관여하지 않는다.



-

targetSdkVersion 의 예는.. 예를 들어 11 로 설정해놓으면 설치한 단말이 API Level 11 이상인 경우 기본 holo theme 이 적용된다.



-

minSdkVersion 이상의 api 를 사용할 때 lint 에 걸릴 수 있다.

이 경우 @TargetApi(nn) 을 명시해줌으로서 lint 를 제거할 수 있다.




-

maxSdkVersion 이라는 녀석도 있다.

이 녀석은 특정 버전 이상에서는 돌아가지 않도록 하기 위함이다.

해당 버전 초과 단말의 경우 설치조차 되지 않는다.


덧붙여 만약 시스템 update 로 인해 sdk version 이 올라가면 앱을 자동 삭제까지 해준다.


하지만 이 녀석을 정의하는것은 추천되지 않는다.

지금 버전에서 도입되었는지는 모르겠지만 추후에 maxSdkVersion 을 설치할 때나 os update 후의 re-validation 할 때 체크하지 않는다는 이야기가 있다.




반응형

댓글