[✔️안드로이드 Version ]
안드로이드의 OS의 일반적인 버전의 표현방식은 아래의 세가지로 표현한다.
1. 버전
2. 코드명
3. API Level
1.버전
- 숫자를 사용해 버전을 표시하는 방법. 정식 버전 1.0을 시작으로 현재 기준 13.0 버전까지 나옴
2. 코드명(별칭)
- 알파벳 A부터 순서대로 표현하는 방법
(L)ollipop, (M)arshmallow, (N)ugat, (O)reo.. 등 - 10.0 이전까지는 1.0을 제외한 버전별 코드명이 전부 캔디나 과자 등 디저트명을 코드명으로 사용했지만 10.0에서는 Q로 시작하는 디저트 이름을 OS 네이밍에 사용하지 않게 되었고, 버전 10.0은 안드로이드 10이라고 공식적으로 명명되었다. 앞으로 구글은 차후의 버전들도 숫자를 이용하여 네이밍을 하기로 하였다.
3. API Level
- 안드로이드 버전이 업데이트 될 때마다 그 버전에 맞는 API버전을 고유하게 식별할 수 있는 정수값
AndroidDeveloper 사이트에서 SDK 버전별 Android API정보를 확인할 수 있다.
https://developer.android.com/guide/topics/manifest/uses-sdk-element?hl=ko
[✔️01. 안드로이드 SDK ]
1. SDK(software development kit)
- 개발자들을 위해 제공하는 개발 도구 모음
- IDE를 포함한 여러 API, 디버깅 프로그램, 라이브러리 등이 있다
- 필요성
- 모든 기능을 처음부터 다 만들지 않아도 된다
- 미리 만들어진 도구를 제공함으로써 개발 과정을 쉽게 함
- 예시
- Android SDK : 안드로이드 앱 개발을 위한 도구
- JDK : 자바 개발자를 대상으로 한 오라클에서 제공하는 도구
- Android API : 개발자들이 안드로이드 개발을 손쉽게 하도록 접근을 허용하는 안드로이드 API
2) 상위 호환성 / 하위 호환성
- 안드로이드 앱을 개발할땐, 이 앱이 어떤 안드로이드 버전(플랫폼 버전)에서 동작할 것인지를 정함
- 안드로이드는 계속해서 새로운 버전이 릴리즈 되고, 기능이 업데이트 되기 때문에 개발자가 앱 개발 시 사용한 API레벨이 모든 안드로이드 버전에서 동작한다는 보장이 없음 (API level 문제)
- API레벨 문제를 해결하기 위해 안드로이드 프로젝트의 build.gradle 파일에 존재하는 minSdkVersion는 설정 값을 지정한다. 이 과정에서 알아야 할 개념이 상위 호환성 / 하위 호환성
1) 상위 호환성
- 예전 버전이 최신 단말기에서 실행이 잘 된다면 '상위 호환'
ex) 최신 단말기에서 핀치 투 줌(터치로 확대/축소)인 기능이 나왔을 때 예전 버전을 실행해도 핀치 투 줌이 동작하면 상위 호환이 잘 된다는 것
2) 하위 호환성
- 이전 버전에서 만든 입력값을 처리할 수 있다면 '하위 호환'
이전 버전에서 만든 Method를 다음 버전 혹은 최신 버전에서 사용 가능 - Android의 대부분 최신 버전에서는 이전 버전을 지원하기 때문에 하위 호환성 있는 어플리케이션을 만들 수 있다
3) compileSdkVersion, minSdkVersion, targetSdkVersion
(1)compileSdkVersion
- 어플리케이션 컴파일 시 사용되는 Android API Version
- gradle에 어떤 안드로이드 SDK 버전으로 앱을 컴파일 할 것 인지 알려준다
- 컴파일 시에만 적용되기에 런타임 동안은 영향 받지 않는다.
- 일반적으로, 새로운 API Version이 배포될 때마다 compileSdkVersion의 값은 최신으로 유지하기를 권장
(2) minSdkVersion
- 어플리케이션이 지원할 수 있는 가장 낮은 API Version
- google play에 어플리케이션 배포 시 사용자의 디바이스에 어플리케이션이 설치될 수 있는지를 결정하는 요소
(3) targetSdkVersion
- 어플리케이션이 디바이스에서 동작할 때 사용하는 API Version
- 앱이 설계되고 테스트 된 안드로이드 Version을 의미함
- 사용자가 앱에 정의된 targetSdkVersion보다 높은 안드로이드 버전을 사용하는 기기에서 앱을 실행하는 경우, 하위 호환 기능을 사용하여 앱이 설계한 방식(targetSdkVersion)으로 계속 작동하고 보이도록 할 수 있다
일반적인 Sdk Version 관계
minSdkVersion <= targetSdkVersion <= compileSdkVersion
안정적인 앱을 원한다면
minSdkVersion <= targetSdkVersion == compileSdkVersion
ex1) targetSdk(API 28) < OS SDK (API 30) : 단말의 Version이 높은 경우
- 디바이스는 하위 호환 기능을 활성화 시켜서 API 28 기준으로 동작시킨다(완벽한 동작 보장 X)
ex2) targetSdk(API 30) > OS SDK (API 27) : App의 targetSdkVersion이 높은 경우
- 호환성을 30에 맞추었기에, API 27에서 동작할 수 있도록 상위 호환 되도록 개발 되었을 것이다(targetSDK Version은 해당 Version까지 테스트했음을 의미하기 때문)
출처