-
안드로이드 버전Programming/Android 2020. 4. 13. 11:46
안드로이드 앱을 개발할 때는 휴대폰마다 어떤 버전을 사용하는 지에 대해 고려해야 한다.
앱의 타겟 연령층이나 특성에 따라 어떤 버전의 휴대폰을 많이 사용하는지, 구현하고자 하는 앱의 기능을 고려하여 최소 지원 버전을 정해야한다.
오래 된 폰을 사용하시는 노인분들을 타겟으로 한다면 낮은 버전까지 고려해야하고 비교적 최신 휴대폰을 많이 사용하는 젊은 세대라면 API를 올려 더 다양한 기능을 사용하면 된다.
Android 플랫폼 버전 ex) Android Pie(Android 9.0)
Android 플랫폼은 애플리케이션이 기본 Android 시스템과 상호작용하는 데 사용할 수 있는 프레임워크 API를 제공합니다. 연속된 각 Android 플랫폼 버전은 Android 애플리케이션 프레임워크 API 업데이트를 포함할 수 있습니다.
API LEVEL ex)API 28
API 레벨은 Android 플랫폼 버전에서 제공되는 프레임워크 API 수정 버전을 고유하게 식별하는 정수 값입니다. 프레임워크 API는 다음 요소로 구성되어 있습니다.
- 핵심 패키지 및 클래스 집합
- 매니페스트 파일을 선언하는 데 사용되는 XML 요소 및 특성 집합
- 리소스를 선언 및 액세스하는 데 사용되는 XML 요소 및 특성 집합
- 인텐트 집합
- 애플리케이션이 요청할 수 있는 권한 및 시스템에 포함된 권한 적용 집합
-> 안드로이드 앱을 개발할 때 제공되는 프레임 워크이다. ex. 이번에 발표된 파이에서는, Notification에서 메신저처럼 메세지(텍스트, 사진 등)를 보낼 수 있는 기능인 MessagingStyle APIs가 새롭게 제공 되었다.
-> 앱을 개발 할 때, 해당 어플리케이션이 지원할 수 있는 최소 API 레벨(minSdkVersion)과 어플리케이션이 실행되는 API 레벨(targetSdkVersion)을 지정해야 한다.
디바이스에서의 API 레벨
애플리케이션이 표시한 API 레벨은 해당 Android 시스템의 API 레벨과 비교되며, 이는 여러 Android 기기 사이에 다를 수 있습니다. Android 디바이스는 첫 출시될 때의 OS 버전(플랫폼 버전)을 그대로 가져가는 것이 아니라 상위 버전으로 업데이트 할 수 있다. 다만 업데이트에 관해서는 기기별로, 제조사별로 상이하다.
현재 단말의 버전확인 로그 보통 단말의 버전을 확인한다는 건 어떤 버전을 기준으로
서비스를 제공하던지 버전별 처리를 다르게 해 주기 위해 확인하기 때문에
보통 아주 간단하게 if문을 사용해 처리해 준다
if(Build.VERSION.SDK_INT >= 26)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
안드로이드 버전
- 컵케이크(Cupcake)- Android 1.5
- 도넛(Donut)- Android 1.6
- 이클레어(프랑스어: Eclair 에클레르[*])- android 2.0~2.1
- 프로요(Froyo, 프로즌 요구르트)- Android 2.2
- 진저브레드(Gingerbread, 생강빵)-Android 2.3
- 허니콤(Honeycomb, 허니콤 토피)-Android 3.0
- 아이스크림 샌드위치(Ice Cream Sandwich)-Android 4.0
- 젤리빈(Jelly Bean)-Android 4.1~4.3
- 킷캣(KitKat)-Android 4.4
- 롤리팝(Lollipop)-Android 5.0~5.1
- 마시멜로(Marshmallow)-Android 6.0
- 누가(Nougat)-Android 7.0~7.1
- 오레오(Oreo)-Android 8.0~8.1
- 파이(Pie)-Android 9.0
- 안드로이드 10-Android 10
android:minSdkVersion
애플리케이션이 실행하는 데 필요한 최소 API 레벨을 지정하는 정수입니다. Android 시스템은 시스템의 API 레벨이 이 특성에 지정된 값보다 낮은 경우 사용자가 애플리케이션을 설치하는 것을 방지합니다. 항상 이 특성을 선언해야 합니다.
android:targetSdkVersion
애플리케이션의 대상 API 레벨을 지정하는 정수입니다. 설정하지 않을 경우 기본값은 minSdkVersion에 주어진 값과 동일합니다.
이 특성은 개발자가 대상 버전을 테스트했고 시스템이 향후 앱의 대상 버전과의 호환성을 유지하기 위해 호환성 동작을 활성화해서는 안 된다는 것을 시스템에 알립니다. 해당 애플리케이션은 여전히 이전 버전(minSdkVersion까지)에서 실행할 수 있습니다.
Android의 새 버전이 나올 때마다 일부 동작은 물론, 심지어 모양까지 변경될 수 있습니다. 그러나 플랫폼의 API 레벨이 앱의 targetSdkVersion이 선언한 버전보다 높은 경우 시스템은 앱이 예상대로 계속 작동하도록 호환성 동작을 활성화할 수 있습니다. 실행 중인 플랫폼의 API 레벨과 일치하는 targetSdkVersion을 지정하면 그러한 호환성 동작을 비활성화할 수 있습니다. 예를 들어 해당 값을 "11" 이상으로 설정하면 Android 3.0 이상에서 실행 중일 때 시스템에서 새 기본 테마(Holo)를 앱에 적용할 수 있고, 대형 화면에서 실행 중일 때 (API 레벨 11에 대한 지원이 대형 화면을 암시적으로 지원하므로) 화면 호환성 모드를 비활성화합니다.
이 특성에 대해 설정한 값에 기반하여 시스템이 활성화할 수 있는 호환성 동작이 많이 있습니다. Build.VERSION_CODES 참조 문서에서 해당 플랫폼 버전별로 이런 여러 가지 동작에 대해 설명합니다.
각 Android 릴리스와 함께 애플리케이션을 유지관리하려면 최신 API 레벨에 맞추어 이 특성 값을 높인 후에 해당 플랫폼 버전에서 애플리케이션을 철저히 테스트해야 합니다.
이름 버전 API 출시 버전 코드 Pie 9.0 28 2018.08 BuildVersionCodes.P Oreo 8.1 27 2017.12 BuildVersionCodes.OMr1 Oreo 8.0 26 2017.08 BuildVersionCodes.O Nougat 7.1 25 2016.12 BuildVersionCodes.NMr1 Nougat 7.0 24 2016.08 BuildVersionCodes.N Marshmallow 6.0 23 2015.08 BuildVersionCodes.M Lollipop 5.1 22 2015.03 BuildVersionCodes.LollipopMr1 Lollipop 5.0 21 2014.11 BuildVersionCodes.Lollipop Kitkat Watch 4.4W 20 2014.06 BuildVersionCodes.KitKatWatch Kitkat 4.4 19 2013.10 BuildVersionCodes.KitKat Jelly Bean 4.3 18 2013.07 BuildVersionCodes.JellyBeanMr2 Jelly Bean 4.2 ~ 4.2.2 17 2012.11 BuildVersionCodes.JellyBeanMr1 Jelly Bean 4.1 ~ 4.1.1 16 2012.06 BuildVersionCodes.JellyBean
https://developer.android.com/about/dashboards/index.html
출처: https://kjwsx23.tistory.com/269 [香格里拉]'Programming > Android' 카테고리의 다른 글
[Android Style Guide] Util/Helper/Manager (0) 2020.06.03 FireBase / NoSQL / FireStore (0) 2020.05.28 Android Studio - Github 연동 (0) 2020.05.28 AppCompatActivity 와 Activity 클래스 차이 (0) 2020.05.28 CollapsingToolbarLayout (0) 2020.05.22