본문 바로가기
안드로이드

Caused by: java.lang.IllegalStateException: Expected Android API level 21+ but was 19 - 오류 해결책 (Feat. Android Query)

by 디지털노마더 2020. 10. 30.

안드로이드 개발은 버전이 업데이트되면서, 네트워크 관련 라이브러리들도 파편화되거나 통합되기 마련이다.

이 과정에서 일부 라이브러리는 deprecated 되면서, 특정 버전 이전에는 지원을 하지 않는 이슈가 발생했다.

 

간혹,, 잘 되던 서비스가 특정 안드로이드 버전에서 막히거나 오류가 생기면 10에 4 정도는 라이브러리 지원이 멈춘 영향

 

과거 네트워크/이미지 처리를 간편하게 도와주는 라이브러리로 AQeury(android-query)가 강세였다.

이로 인해, 수많은 프로젝트에서 AQeury를 사용하게 되었다. 

 

하지만, 현재는 Retrofit이 대세가 되면서 2014년 2월 이후로 AQuery 라이브러리의 업데이트는 멈추었다.

 

나 또한 최근 서비스를 업데이트 하면서 아래와 같은 Error Code를 접하게 되었다.

 

Caused by : java.lang.IllegalStateException: Expected Android API level 21+ but was 19

 

이 말인 즉, 현재 안드로이드 API 레벨에서 21(롤리팝) 이상을 요구하는데 현재는 19(킷캣)이다.

OkHttp에서는 Android 4.4 (킷캣) 버전에 대한 지원을 중단한 상황이다.

 

하지만 우리는 서비스 상, 낮은 버전의 이용자들도 정상적으로 기능이 지원돼야 하는 게 아니던가..

 

물론 해결책은 있다.

 

# 해결책 (build.gradle 옵션 추가)

 

//OkHttp
  implementation ("com.squareup.okhttp3:okhttp:3.12.12"){
      force = true //API 19 support
  }
  implementation 'com.squareup.okhttp3:logging-interceptor:3.12.12'

 

 

참고로 위 해결책의 유지기한은 2020년 12월 31일까지 해당 branch를 유지할 계획이라고 한다.

 

Okhttp:3.12.12 git 주소 참고

 

 

 

 

댓글