목록전체 글 (70)
Groo

Kotlin Multiplatform 프로젝트를 생성하면 아래처럼 3가지 모듈(androidApp, iosApp, shared)도 함께 만들어진 것을 볼 수 있어요. shared 모듈은 kotlin 모듈이며 gradle 빌드 시스템을 사용해요. 안드로이드, ios 애플리케이션에서 공통으로 사용하는 로직을 해당 모듈에서 관리해요. 또 shared 모듈 하위에는 3가지 모듈(androidMain, commonMain, iosMain)이 더 존재 하는데요. commonMain 모듈에서는 순수 kotlin으로만 코드를 작성할 수 있어요. androidMain 모듈에서는 안드로이드 플랫폼 라이브러리도 사용해서 코드를 작성할 수 있어요. 반대로 iosMain 모듈에서는 ios 플랫폼 라이브러리를 사용해서 코드를 작..

Kotlin Multiplatform(KMP)은 다양한 os를 지원해요. 대표적으로 Android, iOS, MacOS, Windows 등이 있어요. KMP를 사용하면 애플리케이션의 중요한 로직을 한 곳에서 관리하고 이를 각 플랫폼에서 서로 공유하여 사용할 수 있어요. 네트워킹, 데이터 검증, 애널리틱스 등 비즈니스 관련 로직을 최초 1번만 작성하면 되는거죠. 심지어 비즈니스 로직 뿐만 아니라 UI도 각 플랫폼 별로 공유할 수 있어요. Compose Multiplatform을 활용하여 UI를 개발하면 말이죠. KMP의 라이브러리 생태계는 꾸준히 성장중이에요. Ktor, Realm, Apollo 등은 이미 KMP를 지원하고 있어요. KMP는 Kotlin 기반이므로 여러분이 이미 안드로이드 개발자라면 새로운..

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) CoroutineScope는 Coroutine Job이 실행되는 Scope이다. CoroutineScope가 해제되면 해당 Scope에 속한 Job들은 모두 취소된다. 안드로이드의 생명주기에 따라 CoroutineScope를 관리하지 않는다면 Job들이 계속해 동작하여 메모리 누수를 일으킨다. val shoutFlow = flow { for (i in 1..100) { emit("${i}번째 관객 소리질러~~~") delay(1000) } } fun collectShoutFlow() { // Application의 생명주기를 따른다 GlobalScope.launch {..

아래 내용은 모두 해당 원글을 기반으로 요약정리한 내용입니다. 그림은 저자가 직접 제작한 것임을 알려드립니다. (출처: Kt World) flatMapConcat과 flatMapLatest는 원 Flow로부터 발행된 데이터를 새로운 Flow로 변환할 때 순차적으로 진행한다. 그러나 flatMapMerge는 병렬로 변환한다. val stockFlow = flow { emit(66600) // 삼성전자 emit(95400) // 카카오 emit(308500) // 네이버 } @FlowPreview fun increaseStock() { lifecycleScope.launch { stockFlow.flatMapMerge { value -> flow { emit(value * 2) delay(10000) emi..