如何在Kotlin Native中使用kotlin.system?

时间:2019-04-01 12:27:31

标签: android kotlin kotlin-native

我想使用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"
    }

我也找不到用法或此模块的任何示例。

1 个答案:

答案 0 :(得分:1)

parse仅适用于getTimeMillis()JVM,不适用于NativeCommon

如果您在Native模块的源目录中只调用JS,则编译器可以找到该函数。

如果您需要在getTimeMillis()中进行调用,则必须自己实现Common包装函数,并自己在每个平台上实现包装。

为此,创建一个存根函数和一个在您的通用模块中使用它的函数。例如:

Common

然后实施可实现您平台特定模块功能的模块。例如,在JVM模块中:

expect fun getSystemTimeInMillis(): Long

fun printSystemTimeMillis() {
    println("System time in millis: ${getSystemTimeInMillis()}")
}

或在本机模块中,例如:

actual fun getSystemTimeInMillis() = System.currentTimeMillis()

另请参阅:https://github.com/eggeral/kotlin-native-system-package