Skip to content

프로젝트에 의존성 추가하기

이 튜토리얼은 IntelliJ IDEA를 사용하지만, Android Studio에서도 따라 할 수 있습니다. 두 IDE 모두 동일한 핵심 기능과 Kotlin Multiplatform 지원을 공유합니다.



이 문서는 공유 로직과 네이티브 UI를 갖춘 Kotlin Multiplatform 앱 만들기 튜토리얼의 세 번째 파트입니다. 계속 진행하기 전에 이전 단계를 완료했는지 확인하세요.

First step

Kotlin Multiplatform 앱 만들기
이 튜토리얼은 IntelliJ IDEA를 사용하지만, Android Studio에서도 따라 할 수 있습니다. 두 IDE 모두 동일한 핵심 기능과 Kotlin Multiplatform 지원을 공유합니다. 이 문서는 공유 로직과 네이티브 UI를 갖춘 Kotlin Multiplatform 앱 만들기 튜토리얼의 첫 번째 파트입니다. Kotlin Multiplatform 앱 만들기, 사용자 인터페이스 업데이트, 의존성 추가, 더 많은 로직 공유, 프로젝트 마무리

Second step
사용자 인터페이스 업데이트
이 튜토리얼은 IntelliJ IDEA를 사용하지만, Android Studio에서도 따라 할 수 있습니다. 두 IDE 모두 동일한 핵심 기능과 Kotlin Multiplatform 지원을 공유합니다. 이 문서는 공유 로직과 네이티브 UI를 갖춘 Kotlin Multiplatform 앱 만들기 튜토리얼의 두 번째 파트입니다. 계속 진행하기 전에 이전 단계를 완료했는지 확인하세요. Kotlin Multiplatform 앱 만들기, 사용자 인터페이스 업데이트, 의존성 추가, 더 많은 로직 공유, 프로젝트 마무리

Third step 의존성 추가
Fourth step 더 많은 로직 공유
Fifth step 프로젝트 마무리

첫 번째 Kotlin Multiplatform 프로젝트를 만들고 수정해 보셨군요! 이제 성공적인 크로스 플랫폼 애플리케이션을 구축하는 데 필수적인 서드파티 라이브러리 의존성(dependency)을 추가하는 방법을 배워보겠습니다.

의존성 유형

Kotlin Multiplatform 프로젝트에서 사용할 수 있는 의존성 유형은 두 가지입니다:

  • 멀티플랫폼 의존성 (Multiplatform dependencies). 여러 타겟을 지원하며 공통 소스 세트인 commonMain에서 사용할 수 있는 멀티플랫폼 라이브러리입니다.

    Koin, Coil, SQLDelight와 같은 많은 최신 Android 라이브러리들이 이미 멀티플랫폼을 지원합니다. JetBrains에서 제공하는 Kotlin Multiplatform 라이브러리 검색 서비스인 klibs.io에서 더 많은 멀티플랫폼 라이브러리를 찾아보세요.

  • 네이티브 의존성 (Native dependencies). 관련 생태계의 일반적인 라이브러리입니다. 네이티브 프로젝트에서는 보통 Android의 경우 Gradle을, iOS의 경우 Swift Package Manager 등을 사용하여 작업합니다.

    멀티플랫폼 프로젝트 모듈로 작업할 때, 보안 저장소(security storage)나 특정 시스템 호출과 같은 플랫폼 API를 사용하려면 일반적으로 여전히 네이티브 의존성이 필요합니다. 빌드 스크립트에서는 androidMainiosMain과 같은 네이티브 소스 세트의 구성(configuration)에 네이티브 의존성을 지정합니다.

두 유형의 의존성 모두 로컬 및 외부 저장소를 사용할 수 있습니다.

멀티플랫폼 의존성 추가하기

Android 앱 개발 경험이 있다면, 멀티플랫폼 의존성을 추가하는 과정은 일반적인 Android 프로젝트에서 Gradle 의존성을 추가하는 것과 매우 유사합니다. 유일한 차이점은 특정 소스 세트(source set)에 추가해야 한다는 것입니다.

이제 인사말을 좀 더 화기애애하게 만들어 봅시다. OS 버전 외에 새해까지 남은 일수를 표시하는 기능을 추가하겠습니다. kotlinx-datetime 라이브러리는 완전한 멀티플랫폼을 지원하며, 공유 코드에서 날짜를 다루는 가장 편리한 방법입니다.

  1. gradle/libs.versions.toml 파일을 열고 version catalog에 kotlinx-datetime 의존성을 추가합니다:

    toml
    [versions]
    kotlinx-datetime = "0.8.0"
    
    [libraries]
    kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinx-datetime" }
  2. sharedLogic/build.gradle.kts 파일을 열고 공통 코드 소스 세트를 구성하는 섹션에 해당 라이브러리 항목에 대한 참조를 추가합니다:

    kotlin
    kotlin {
        //... 
        sourceSets {
            commonMain.dependencies {
                implementation(libs.kotlinx.datetime)
            } 
        }
    }
  3. Build | Sync Project with Gradle Files 메뉴 항목을 선택하거나 빌드 스크립트 에디터에서 Sync Gradle Changes 버튼을 클릭하여 Gradle 파일을 동기화합니다: Gradle 파일 동기화

kotlinx-datetime API 호출하기

의존성을 추가했으므로, 이제 공통 코드에 날짜 및 시간 계산 로직을 추가할 수 있습니다.

  1. sharedLogic/src/commonMain/.../greetingkmp 디렉토리를 우클릭하고 New | Kotlin Class/File을 선택하여 새 파일 NewYear.kt를 생성합니다.

  2. NewYear.kt에서 datetime 날짜 연산을 사용하여 오늘부터 내년 초까지의 일수를 계산하고 표시할 문구를 만드는 두 개의 함수를 추가합니다:

    kotlin
    fun daysUntilNewYear(): Int {
        val today = Clock.System.todayIn(TimeZone.currentSystemDefault())
        val closestNewYear = LocalDate(today.year + 1, 1, 1)
        return today.daysUntil(closestNewYear)
    }
    
    fun daysPhrase(): String = "There are only ${daysUntilNewYear()} days left until New Year! 🎆"
  3. IDE의 안내에 따라 필요한 모든 import를 추가합니다. kotlinx.datetime.Clock이 아닌 kotlin.time.Clock을 임포트해야 합니다.

  4. Greeting.kt 파일에서 결과를 확인할 수 있도록 Greeting 클래스를 업데이트합니다:

    kotlin
    class Greeting {
        private val platform: Platform = getPlatform()
    
        fun greet(): List<String> = buildList {
            add(if (Random.nextBoolean()) "Hi!" else "Hello!")
            add("Guess what this is! > ${platform.name.reversed()}!")
            add(daysPhrase())
        }
    }
  5. 결과를 확인하려면 IntelliJ IDEA에서 androidAppiosApp 실행 구성을 다시 실행하세요:

외부 의존성이 추가된 모바일 멀티플랫폼 앱 업데이트

다음 단계

튜토리얼의 다음 파트에서는 프로젝트에 더 많은 의존성과 더 복잡한 로직을 추가해 보겠습니다.

다음 파트로 진행하기

참고 항목

도움 받기