Android 如何将kotlin.system与kotlin Native一起使用?
我想使用系统函数,比如getTimeMillis(),它应该是kotlin.system的一部分: 但是编译器说这样的模块不能被导入。gradle配置如下(kotlin多平台项目): 此外,我找不到任何使用或此模块的示例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()
仅适用于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项目来展示如何做到这一点。