Android Java 8+ Api desugaring

사용 버전: Android Studio 4.1.1
사용 언어: 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


댓글

이 블로그의 인기 게시물

음악 총보(Score), 파트보(Part)

Python urllib.parse.quote()

KiCad 시작하기 6 (FreeRoute 사용하기 1)

Kivy 시작하기 12 (Pyinstaller로 exe 파일 만들기)

일본어 문장부호

Android 특정 SDK Version 설정하기

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

Android Compose Hilt

Python urllib.request.urlopen()

KiCad 시작하기 7 (FreeRoute 사용하기 2)