Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将kotlin.system与kotlin Native一起使用?_Android_Kotlin_Kotlin Native - Fatal编程技术网

Android 如何将kotlin.system与kotlin Native一起使用?

Android 如何将kotlin.system与kotlin Native一起使用?,android,kotlin,kotlin-native,Android,Kotlin,Kotlin Native,我想使用系统函数,比如getTimeMillis(),它应该是kotlin.system的一部分: 但是编译器说这样的模块不能被导入。gradle配置如下(kotlin多平台项目): 此外,我找不到任何使用或此模块的示例 getTimeMillis()仅适用于JVM和Native而不适用于Common和JS 如果您只需在本机模块的源目录中调用getTimeMillis(),编译器就可以找到该函数 如果需要在Common中调用,则必须自己实现Common包装器函数,并在每个平台上自己实现包装器 为

我想使用系统函数,比如getTimeMillis(),它应该是kotlin.system的一部分:

但是编译器说这样的模块不能被导入。gradle配置如下(kotlin多平台项目):

此外,我找不到任何使用或此模块的示例

getTimeMillis()
仅适用于
JVM
Native
而不适用于
Common
JS

如果您只需在本机模块的源目录中调用
getTimeMillis()
,编译器就可以找到该函数

如果需要在
Common
中调用,则必须自己实现
Common
包装器函数,并在每个平台上自己实现包装器

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

expect fun getSystemTimeInMillis(): Long

fun printSystemTimeMillis() {
    println("System time in millis: ${getSystemTimeInMillis()}")
}
然后在特定于平台的模块中实现该功能。例如,在JVM模块中,如:

actual fun getSystemTimeInMillis() = System.currentTimeMillis()
actual fun getSystemTimeInMillis() = getTimeMillis()
或在本机模块中,如:

actual fun getSystemTimeInMillis() = System.currentTimeMillis()
actual fun getSystemTimeInMillis() = getTimeMillis()

另请参见:

我正在本机代码中使用getTimeMillis(),但它仍然找不到方法:/我分享了我正在使用的例子,感谢你付出了如此多的努力来帮助我。我知道你的项目是为MacOS定义的,我正在尝试使用Android和iOS,启用SourceSet——也许这就是区别。换句话说,我意识到我需要它。我只是认为“Common”是“Native”。在这种情况下,您需要使用“actual”和“expect”。我更新了我的答案和Github项目来展示如何做到这一点。