안드로이드 버전과 API 레벨

안드로이드 버전과 API 레벨

2024년 11월 26일

개요 #

안드로이드는 버전이 자주 나오는데, 버전별로 기능도 너무 많이 달라진다.
앱을 분석하면서 문제 생기는 버전 카테고리도 여러개라 너무 헷갈리고 동작도 제대로 정리가 안되기 때문에 한번 정리할 필요성을 느꼈다.

버전들의 역할과 각 버전별 특이점을 정리한 문서가 될 것 같다.


운영체제 #

현재 기기 환경에 대한 정보이며 각 버전마다 코드네임과 API 레벨이 매핑되어 있다.
ex) Android 13 == Tiramisu (T) == API 33

API 레벨로 운영체제에서 제공하는 SDK의 버전을 식별할 수 있으며 개발자가 이 레벨에 맞는 기능으로 앱을 구현할 수 있도록하며 앱과의 호환성을 나타낸다.

운영체제 버전이 올라갈 때마다 변경사항이 보안과 플랫폼 안정성을 위해 운영체제 자체의 동작과 모든 앱의 동작에 영향을 줄 수 있고,
앱의 targetSdkVersion 에 따라서만 영향을 주는 경우도 있다.

운영체제의 모든 기능을 앱에 적용하고 싶다면, targetSdkVersion 도 올려야 한다.


#

minSdkVersion #

앱이 지원하려 하는 최소 API 레벨을 설정한다. 이 값보다 API 레벨이 낮은 기기는 앱을 설치할 수 없게된다.
앱이 사용하는 기능이 특정 API 레벨부터 지원한다면 이 값을 맞춰서 지정하거나 호환성 코드를 작성해야 한다. (Android Studio에서 알려줌)

targetSdkVersion #

앱이 타게팅하는 API 레벨을 지정한다. 운영체제가 이 값을 기준으로 일부 최신 보안 정책과 동작 방식을 강제한다.
당연하게도 targetSdkVersion이 더 높은 경우에도 그냥 운영체제의 최대 정책으로 동작한다.

versionCode, versionName #

이건 앱의 내부 빌드 버전을 의미하며 앱 업데이트 로직 등에서 사용된다.


개발환경 #

compileSdkVersion #

앱이 컴파일될때 개발 환경의 SDK의 API 레벨이며, 개발 환경에서 빌드 에러나 API intellisence의 기준이 되기 때문에 호환성 코드를 작성할 때 관련된다.

buildToolsVersion #

앱 빌드에 사용되는 도구들에 대한 버전. 리소스 처리, dex/apk 빌드, 최적화 지원 등에 사용되는 도구 모음의 버전이다.


API 레벨 별 주요 변경사항 #

comments powered by Disqus