반응형

1. 조건문을 통한 분기 처리

  • 가장 이해가 쉽고 좋은 방법으로 생각됨

예제 코드

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    permissionCheck();
}

2. @TargetApi

  • Lint에러를 발생시키지 않는 역할만 함(minSdkVersion보다 높은 version에 선언된 API 사용할 경우 Lint에러 발생)
  • (Lint는 안드로이드 버전별로 어떤 API를 사용하는지에 대한 정보를 가지고 있음)
  • 버전에 상관없이 호출 및 동작이 되며, 버전에 따라 에러가 나는 API가 있다면 "1. 조건문을 통한 분기 처리"를 사용자가 직접 구현하여 에러를 방지 해야 함.

예제 코드

@TargetApi(Build.VERSION_CODES.M)
void targetApiFunc() {
    Toast.makeText(this, "targetApiFunc() 호출", Toast.LENGTH_SHORT).show();
}

3. @RequireApi

  • minSdkVersion이 지정한 버전보다 낮을 경우 바로 호출시에는 컴파일 에러 발생
  • "1. 조건문을 통한 분기 처리"를 통해 호출해야 에러가 발생하지 않음

예제 코드

@RequiresApi(Build.VERSION_CODES.M)
void requireApiFunc() {
    Toast.makeText(this, "targetApiFunc() 호출", Toast.LENGTH_SHORT).show();
}

//호출 : 조건문없이 호출하면 minSdkVersion에 따라 컴파일 에러 발생
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    requireApiFunc();
}

(참고) 안드로이드 버전 리스트

버전 (코드명)별칭 API Level
4.0 / 4.0.3 (I)아이스크림 14, 15
4.1 / 4.2 / 4.3 (J)젤리빈 16, 17, 18
4.4 / 4.4Wear (K)킷캣 19, 20
5.0 / 5.1 (L)롤리팝 21, 22
6 (M)마시멜로우 23
7.0 / 7.1 / 7.2 (N)누가 24, 25
8.0 / 8.1 (O)오레오 26, 27
9 (P)파이 28
10 (Q)퀸 케이크 29
11 (R)레드 벨벳 케이크 30

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기