안드로이드 개발을 하다보면 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)
}
}
딱보면 알겠지만
우선 "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일이 남았네요.. 많이 남았네)
다음시간에는 더 많은 지원 라이브러리를 소개해보겠습니다