본문 바로가기
개발(Development)/Android(안드로이드)

[안드로이드] 안드로이드 폰 장치 OS 버전 체크 방법(Build.VERSION.SDK_INT)

by 카레유 2021. 8. 26.

최신 버전의 API를 사용하면,

minSdkVersion에서 지원하지 않는 API라는 경고가 노출될 때가 있다.

 

minSdkVersion 버전의 OS까지 지원하기로 설정해 두고,

이 버전에서 지원되지 않는 최신 버전 OS에서만 제공되는 API를 사용하기 때문에 발생하는 경고다.

 

해결 방법은 2가지다.

 

1. minSdkVersion을 높인다.

- 최신 버전의 OS가 탑재된 스마트폰만 지원하는 방식이다.

- 구버전의 OS가 탑재된 스마트폰은 지원하지 못한다.

 

2. 스마트폰의 OS 버전을 체크하여 분기 처리한다.

- 최신 버전의 OS가 탑재된 스마트폰은 최신 API를 사용하도록 설계하고,

- 구 버전의 OS가 탑재된 스마트폰은 다른 대체 코드를 사용한다.

 

여기서는 2번째 방법을 정리한다.


# 안드로이드 장치 OS 버전 체크 방법

1. 안드로이드 OS 버전

- "앱이 구동되고 있는 장치의 안드로이드 OS 버전"는 아래 상수로 취득 가능

 

Build.VERSION.SDK_INT

 

 

2. OS 버전별 상수

- "각 OS 버전" 은 아래 상수로 취득 가능(뒤에 OS 코드명을 변경하면 된다)

 

Build.VERSION_CODES.OS코드명 

 

- OS 코드명 종류

BASE
BASE_1_1
CUPCAKE
CUR_DEVELOPMENT
DONUT
ECLAIR
ECLAIR_0_1
ECLAIR_MR1
FROYO
GINGERBREAD
GINGERBREAD_MR1
HONEYCOMB
HONEYCOMB_MR1
HONEYCOMB_MR2
ICE_CREAM_SANDWICH
ICE_CREAM_SANDWICH_MR1
JELLY_BEAN
JELLY_BEAN_MR1
JELLY_BEAN_MR2
KITKAT
KITKAT_WATCH
 LOLLIPOP
 LOLLIPOP_MR1
M
N
N_MR1
O
O_MR1
P
Q
R
S

 

이후의 최신 OS에 대한 상수값은 아래 레퍼런스를 참고

https://developer.android.com/reference/android/os/Build.VERSION_CODES

 

 

3. 코드 처리 방법

- 현재 구동중인 장치의 OS버전과, 최신 API의 SDK 버전을 비교하여 분기 처리한다.

 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
   // LOLLIPOP 이상 버전의 장치인 경우, 최신 API 사용

} else {
   // LOLLIPOP 미만 버전의 장치인 경우, 대체 API 사용

}

 


# 첨언

사실 하위 버전의 안드로이드 OS를 지원하기 위한 최선의 방법은

가급적 androidx.xxx. 로 시작하는 Jectpack 라이브러리를 사용하는 것이다.

Jetpack라이브러리는 하위 버전에 대한 호환성(Backward Compatibility) 뿐만 아니라 더욱 개선된 API를 제공하기 때문이다.

 

하지만 Jectpack 라이브러리는 아직 모든 기능과 API를 포함하진 못한다.

 

따라서, JectPack에서 커버하지 못하는 최신 버전의 API를 사용하면서

과거 안드로이드OS 까지 지원하려면 앱이 구동되고 있는 안드로이드 장치의 OS 버전을 체크하여 분기 처리해주어야 한다.

 

 

 

댓글