Android Java 8+ Api desugaring
사용 버전: Android Studio 4.1.1
사용 언어: Kotlin 1.4.21
Java 8을 사용하는 Api 중에서 안드로이드 API 최소 기준이 높은 경우가 있습니다.
제 프로젝트는 21이 최소 버전인데, 이 Api를 사용하기 위해서는 26의 버전이 필요할 때입니다.
이 26 버전이 필요한 Api를 21의 버전에서도 작동되게 하는 게 desugaring입니다.
desugaring은 설탕을 제거하다는 영어 뜻인데, 설탕이 안 좋은 걸 의미하나 보네요. 제거해야지 작동하니 말이죠.
https://developer.android.com/studio/write/java8-support
사용 언어: Kotlin 1.4.21
안드로이드 Java 8+ Api desugaring을 해보겠습니다.
Java 8을 사용하는 Api 중에서 안드로이드 API 최소 기준이 높은 경우가 있습니다.
제 프로젝트는 21이 최소 버전인데, 이 Api를 사용하기 위해서는 26의 버전이 필요할 때입니다.
이 26 버전이 필요한 Api를 21의 버전에서도 작동되게 하는 게 desugaring입니다.
desugaring은 설탕을 제거하다는 영어 뜻인데, 설탕이 안 좋은 걸 의미하나 보네요. 제거해야지 작동하니 말이죠.
https://developer.android.com/studio/write/java8-support
모든 Api가 desugaring 가능한 것은 아닙니다.
아래 특정 라이브러리만 가능합니다.
java.util.stream
java.time
java.util.function
java.util.{Map, Collection, Comparator}
java.util.Optional
java.util.OptionalInt
java.util.OptionalDouble
java.util.concurrent.atomic
ConcurrentHashMap
자 그럼 예시를 봅시다.
아래의 빨간색 기능들은 최소 API level이 26입니다. 현재는 21이라고
알려주네요.
java.time은 desugaring 가능한 라이브러리입니다.
desugaring으로 해결해봅시다.
app 용 build.gradle로 갑니다.
coreLibraryDesugaringEnabled, sourceCompatibility, targetCompatibility를
설정합니다.
dependencies에 coreLibraryDesugaring을 추가합니다.
만약 최소 api level이 20 보다 작다면 multiDexEnabled를 해줍니다.
Sync Now를 누릅니다.
자, 봅시다.
빨간 글자가 사라졌죠?
최소 API를 변경하지 않고도 사용이 가능해졌습니다.
끝.
카테고리: Android
댓글
댓글 쓰기
궁금한 점은 댓글 달아주세요.
Comment if you have any questions.