Я хотел бы использовать системные функции, такие как getTimeMillis(), которые должны быть частью kotlin.system: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.system/index.html.
Но компилятор говорит, что такой модуль не может быть импортирован. Конфигурация gradle выглядит следующим образом (мультиплатформенный проект kotlin):
commonMain.dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-common:1.3.10"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.10.0"
implementation "io.ktor:ktor-client:1.0.0"
implementation "io.ktor:ktor-client-logging:1.1.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.1.0"
}
Также я не могу найти ни одного примера использования или этого модуля.
getTimeMillis()
доступен только для JVM
и Native
не для Common
и JS
.
Если вы вызываете getTimeMillis()
в исходном каталоге модуля Native, компилятор может найти функцию.
Если вам нужен вызов Common
вы должны самостоятельно реализовать функцию Common
wrapper и реализовать ее на каждой платформе.
Для этого создайте функцию-заглушку и функцию, которая использует ее в вашем общем модуле. Например:
expect fun getSystemTimeInMillis(): Long
fun printSystemTimeMillis() {
println("System time in millis: ${getSystemTimeInMillis()}")
}
Затем внедрите эту функцию в свои модули для конкретной платформы. Например, в модуле JVM, например:
actual fun getSystemTimeInMillis() = System.currentTimeMillis()
Или в родном модуле вроде:
actual fun getSystemTimeInMillis() = getTimeMillis()
Смотрите также: https://github.com/eggeral/kotlin-native-system-package