본문 바로가기

Android

안드로이드 앱 개발 시 SDK에 대한 이해와 점유율

반응형

이전 안드로이드를 배우면서 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/

안드로이드 공식 홈페이지 대시보드 자료

 

배포 대시보드  |  Android Developers

Android 생태계 내 활성화되어 있는 기기 특성 및 플랫폼 버전 개요

developer.android.com

스탯 카운터, 인터넷을 사용하기 위한 도구인 브라우저를 통해

사용자의 컴퓨터 사용 환경을 파악하여 주기적으로 사용 현환을 발표하는 아일랜드 웹분석 업체

https://gs.statcounter.com/android-version-market-share/mobile-tablet/asia

 

Mobile & Tablet Android Version Market Share Asia | StatCounter Global Stats

This graph shows the market share of mobile & tablet android versions in Asia based on over 10 billion monthly page views.

gs.statcounter.com

안드로이드 대시보드 홈페이지 기준 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

 

[Android] compileSdkVersion, targetSdkVersion 등 SDK 버전 설정 이해하기

compileSdkVersion, targetSdkVersion 등 SDK 버전 설정 알아보기 개념은 어설프게 알아와서 이번 포스팅으로 정확하게 이해하기 위해 정리했습니다. 안드로이드는 상위호환성을 중요시하기때문에 compileSdkVersi..

duzi077.tistory.com

https://jw910911.tistory.com/49

 

안드로이드 - compilesdkversion minsdkversion targetsdkversion buildtoolsversion

보통 이런 문제가 발생하게되면 compilesdkversion, minsdkversion 등을 확인해보게 됩니다. 그렇지만 잘 알고 쓴적은 없어서 이번기회에 한번 정리해보겠습니다. compileSdkVersion compileSdkVersion으로 gradle..

jw910911.tistory.com

 

 

Web, Android, iOS 개발 문의 및 앱 웹 제작 문의

Email : funidea2020@naver.com

https://funidea.co.kr/

 

https://funidea.co.kr/

AI 챗봇 & 사물인식 사물 인식, 인공지능 챗봇 등 Smart한 인공지능 기술을 통해 반복 업무를 줄여 보세요. 위치 기반 서비스 GPS 기능을 활용하여 현재 위치를 기준으로 주변 정보(은행, 음식점, 주�

funidea.co.kr

 

여성 신체 사이즈 기반 상품 추천 서비스!

나에게 딱 맞은 골라보자! Fit Me !

https://fit-me.kr/

 

핏미 - 사이즈 고민 없는 여성 쇼핑앱

더이상의 사이즈 고민은 그만! 수많은 여성 쇼핑몰을 한눈에! - 핏미

fit-me.kr

 

반응형