KMM 사용해보기 (3) dependencies 추가해보기

WonDDak·2023년 3월 11일
0

KMP- Kotlin MultiPlatform

목록 보기
3/12

Dependencies

안드로이드 개발을 하다보면 build.gradle에 많은 라이브러리를 추가해보았을 것이다.

kmm에서도 동일하게 라이브러리르 추가하여 사용할수있다.

추가하기

project로 변경하여 shared/build.gradle.kts로 이동하자
kmm은 기본적으로 gradle이 아니라 gradle.kts를 사용중이다.
(kotlin-dsl의 차이점을 알고있으면 좋을것이다..)

    sourceSets {
        val commonMain by getting
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
            }
        }
        val androidMain by getting
        val androidUnitTest by getting
        val iosX64Main by getting
        val iosArm64Main by getting
        val iosSimulatorArm64Main by getting
        val iosMain by creating {
            dependsOn(commonMain)
            iosX64Main.dependsOn(this)
            iosArm64Main.dependsOn(this)
            iosSimulatorArm64Main.dependsOn(this)
        }
        val iosX64Test by getting
        val iosArm64Test by getting
        val iosSimulatorArm64Test by getting
        val iosTest by creating {
            dependsOn(commonTest)
            iosX64Test.dependsOn(this)
            iosArm64Test.dependsOn(this)
            iosSimulatorArm64Test.dependsOn(this)
        }
    }

딱보면 알겠지만

  • commonMain > 공통
  • androidMain > 안드로이드 용
  • ios64Main > IOS용이다.

라이브러리 추가

우선 "kotlinx-datetime"이라는 시간계산 라이브러리를 추가해보자

kotlin {
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")
            }
        }
    }
}

implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0")

위와 같이 commonMain에 추가한뒤 sync Now를 눌러 추가해주자.

공통 모듈 생성

다음으로 shared/src/commonMain/kotlin 폴더에 NewYear이라는 kt 파일을 하나 생성해주자.

그리고 다음과 같이 작성해 봅시다.

import kotlinx.datetime.*

fun daysUntilNewYear(): Int {
    val today = Clock.System.todayIn(TimeZone.currentSystemDefault())
    val closestNewYear = LocalDate(today.year + 1, 1, 1)
    return today.daysUntil(closestNewYear)
}

사용해보기

프로젝트 생성시 있는 Greeting.kt로 이동하여 다음과 같이 수정해보자.

class Greeting {
    private val platform: Platform = getPlatform()

    fun greeting(): String {
        return "Guess what it is! > ${platform.name.reversed()}!" +
                "\nThere are only ${daysUntilNewYear()} days left until New Year! 🎆"
    }
}

잘 작동하는 모습입니다.
(오늘 기준(03.11)으로 296일이 남았네요.. 많이 남았네)

다음시간에는 더 많은 지원 라이브러리를 소개해보겠습니다

profile
안녕하세요. 원딱입니다.

0개의 댓글