안드로이드 버전과 API 레벨

개요

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

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

운영체제

현재 기기 환경에 대한 정보이며 각 버전마다 코드네임과 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

ESC
Type to search...