이전 안드로이드를 배우면서 sdk에 대해선 어느정도 이해하고 있었지만, 다른 사람에게 설명하거나,
명확한 이해자료를 보관하기 위해 글로 작성하여 남긴다.
실제 앱을 배포시 반드시 고려해야 할 상황 중 하나이다.
Gradle Scripts에서 bulid.gradle(Module : app)에서 다음을 확인 할 수 있을 것이다.
compileSdkVersion
-
Gradle에 어떤 안드로이드 SDK 버전으로 앱을 컴파일 할 것인지 알려줍니다 . 즉, 지원할 수 있는 가장 높은 API 버전을 의미합니다.
해당 SDK 버전에 포함된 API를 사용할 수 있다는 것을 의미합니다. -
컴파일시에만 적용되므로 런타임동안에는 영향을 미치지 않습니다.
-
항상 최신 버전의 SDK로 지정하는 것이 좋습니다.
-
import문으로참조되는 클래스나 메소드를 찾을 때 어떤 버전의 SDK에서 찾을 것인가를 결정해줍니다.
minSdkVersion
-
minSdkVersion보다 낮은 API 버전 앱은 설치할 수 없습니다.
-
minSdkVersion보다 높은 API를 사용하면 lint에서 경고를 띄워 알려줍니다.
-
Support Library나 Google Play Service는 자체 minSdkVersion을 가지므로 이 중 가장 높은 버전으로 맞춰야 합니다.
-
minSdkVersion 은 앱이 지원할 가장 낮은 API버전을 지정합니다.
-
Google Play에서 사용자의 기기에 앱이 설치될 수 있을지 결정하는 요소입니다.
-
minSdkVersion보다 높은 API를 사용하면 lint에서 경고를 띄워 알려주므로 미리 방지할 수 있습니다.
-
Support Library나 Google Play Service는 자체 minSdkVersion을 가지므로 이중 가장 높은 버전 이상으로 맞춰야 합니다.
targetSdkVersion
-
minSdkVersion 이상에서 지원하는 어떤 기능을 사용하고자 위함입니다.
-
실제 컴파일에는 관여하지 않음. 빌드시 버전을 낮추어도 원하는 클래스의 메소드를 컴파일 할 수 있습니다.
-
지정한 버전까지 앱을 테스트 했음을 의미합니다. 기기가 Nougat(API 24)더라도 target이 Marshmellow(API 23)이라면 Marshmellow 단말기까지는 정상동작 됨을 의미하며 Nougat기기는 정상적으로 돌아갈지 확신할 수 없습니다. 상위호환되는 API로 개발을 했다면 아마 잘 돌아갈 것 입니다.
-
즉 targetSdkVersion이 달라야 앱의 행동 로직이 달라지므로, 안드로이드가 상위호환성을 제공할 수 있습니다.
-
Marshmellow(API 23)에서 도입된 런타임 퍼미션(runtime permission model)은 targetSdkVersion 을 API 23으로 지정해야 적용됩니다.
compileSdkVersion을 25로하고 targetSdkVersion을 21로하면 Marshmellow 이상 단말기에서 런타임 퍼미션이 Marshmellow 이전처럼 강제 허용되어 있습니다. 허용을 해제하려고하면 이전 버전으로 빌드된 앱이라고 메시지가 출력됩니다.
-
targetSdkVersion이 22이라면 22이후 버전에서 지원되는 기능이 제외된 앱이 만들어지므로 런타임 퍼미션을 사용 못하는 것입니다.
타겟으로 하는 SdkVersion 이라는 뜻은 코드가 그 SdkVersion에 최적화 되었다 라고 볼 수 있습니다.
즉 Api21의 기능과 UI를 기준으로 앱의 디자인과 개발이 된 상태라면, 굳이 최신인 API25를 기준으로 하는 것을 오히려 좋지 않을 수 있습니다.
개발자가 예상하지 못하는 UI나 기능들을 API25의 플랫폼을 사용하는 유저가 접하게 될수도 있기 때문입니다.
따라서 이 targetSdkVersion 에서 만큼은 최신버전이 아니라 최적의 버전을 선택해서 사용해야 한다가 답이라고 할 수 있습니다.
물론 Android가 개발해놓은 최신 UI와 기능들을 API에 최적화 시켜 개발한다면 targetSdkVersion 도 최신버전을 사용 할 수 있습니다.
==========================================================================
다음은 점유율 자료이다.
안드로이드 홈페이지의 대시보드를 자료와 스탯 카운터(아시아)의 자료를 확인하였다.
https://developer.android.com/about/dashboards/
안드로이드 공식 홈페이지 대시보드 자료
스탯 카운터, 인터넷을 사용하기 위한 도구인 브라우저를 통해
사용자의 컴퓨터 사용 환경을 파악하여 주기적으로 사용 현환을 발표하는 아일랜드 웹분석 업체
https://gs.statcounter.com/android-version-market-share/mobile-tablet/asia
안드로이드 대시보드 홈페이지 기준 Pie(10.4%)와 Oreo(8.0+8.1)[12.9%, 15.4%] 약 38.7%로 나타나며
statcounter - 아시아(기준)으로는 Pie(29.04%)와 Oreo(8.0+8.1)-[7.19%, 19.32%] 약 56.36%로 나타난다.
참고 블로그 및 자료
https://duzi077.tistory.com/141
https://jw910911.tistory.com/49
Web, Android, iOS 개발 문의 및 앱 웹 제작 문의
Email : funidea2020@naver.com
https://funidea.co.kr/
여성 신체 사이즈 기반 상품 추천 서비스!
나에게 딱 맞은 골라보자! Fit Me !
https://fit-me.kr/
'Android' 카테고리의 다른 글
[안드로이드 링크 정리] Camera API2 관련 링크 정리(2) 2019_11_25 ~2019_11_30 (0) | 2019.12.01 |
---|---|
[안드로이드 링크 정리]프래그먼트 생명주기 & 프래그먼트 관련 용어 정리 2019_11_25 ~2019_11_30 링크(1) (0) | 2019.12.01 |
Android에서 제공하는 Mobile Sensor를 이용하여 핸드폰 기울기 측정 (0) | 2019.11.24 |
[Android] SurfaceView를 이용한 카메리 기능 구현하기(1) (0) | 2019.11.24 |
human Pose estimation Mobile Github Link (포즈 추정 깃허브 링크 자료 모음) (0) | 2019.11.24 |