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


댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

Python OpenCV 빈 화면 만들기

tensorflow tf.random.uniform()

Android Notification with Full Screen

KiCad 시작하기 2 (PCB 만들기)

Android Minimum touch target size

Python bs4.SoupStrainer()

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

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

tensorflow tf.expand_dims()