Как использовать kotlin.system с Kotlin Native?

1

Я хотел бы использовать системные функции, такие как 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"
    }

Также я не могу найти ни одного примера использования или этого модуля.

Теги:
kotlin
kotlin-native

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

  • 0
    Я использую getTimeMillis () в нативном коде, и он все еще не может найти метод. : /
  • 0
    Я поделился примером, который я использую на github.com/eggeral/kotlin-native-system-package
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню