Java | Android

Android 버전에 따라 실행되는 코드

partner_jun 2017. 5. 9. 21:42

안드로이드 어플리케이션의 하위 호환성을 위해 버전에 따라 기능을 제한할 필요가 있다. 그러기 위해서는 몇 가지 설정이 필요하다.


1. Build.gradle

먼저 어플리케이션의 타겟 Sdk 버전과 지원가능한 최소 Sdk버전을 정해야 한다. 여기서 최소 Sdk 버전(minSdkVersion)에 따라 앱을 설치할 수 있는 최소 버전의 안드로이드가 정해지고 타겟 Sdk 버전(targetSdkVersion)에 따라 빌드할 때 앱에서 상위 버전 코드를 아예 제외할지 여부가 결정된다.

minSdkVersion 18
targetSdkVersion 22

이렇게 설정하면 젤리빈MR2(Sdk 18)부터 설치가 가능하고 롤리팝(Sdk 22) 이후 버전에서 지원되는 기능은 모두 제외된 앱이 만들어진다.



2. 버전에 따른 실행 분기

Build.VERSION.SDK_INT 값을 이용해 이 앱이 실행된 안드로이드의 버전을 얻어올 수 있다. 

여기서 주의할 점은, 검색하면 많이 보이는 Build.Versions_CODES_버전명 으로 확인하면 안 된다는 것이다. 

왜 이런 코드가 퍼졌는지 의문스러운데, 낮은 버전의 안드로이드에서는 상위 버전의 이름이 등록 되어있지 않아 저 구문에서 에러가 발생한다. 그렇기 때문에 int형태의 Sdk 버전을 직접 적어야 한다.

if (Build.VERSION.SDK_INT >= 21) {
// Sdk 21버전부터 실행할 코드
}

SDK 21부터 실행할 코드를 지정하는 if 구문