如何在Kotlin/Native中构建kotlinx.coroutines(测试版本0.23.4-native-1)
How to build kotlinx.coroutines in Kotlin/Native (test version 0.23.4-native-1)
这个问题是这个话题的延续:
https://github.com/Kotlin/kotlinx.coroutines/issues/246#issuecomment-407023156
我正在尝试在 Kotlin/Native 项目中使用 org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1
,目标是 iOS。
build.gradle
:
buildscript {
repositories {
mavenCentral()
maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" }
}
dependencies {
classpath 'org.jetbrains.kotlin:kotlin-native-gradle-plugin:0.8'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.51"
}
}
apply plugin: 'kotlin-platform-native'
repositories {
jcenter()
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
}
sourceSets {
main {
component {
target 'ios_arm32', 'ios_arm64', 'ios_x64'
outputKinds = [KLIBRARY]
}
}
}
dependencies {
expectedBy project(':common')
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1"
}
kotlinx:kotlinx-coroutines-core-native
依赖项似乎不起作用,因为会产生如下构建错误:
error: unresolved reference: coroutines
import kotlinx.coroutines.experimental.*
^
如果我手动包含 org.jetbrains.kotlinx:kotlinx-coroutines-core-native_release_ios_x64:0.10.3-native
等工件依赖项,则会出现编译器异常:
exception: java.lang.IllegalStateException: Could not find "atomicfu-native"
此错误仍然存在,即使我也添加了 org.jetbrains.kotlinx:atomicfu-native:0.10.3-native
依赖项。
这是要检查的事项列表(我已经完成了这个,并最终成功了):
启用 Gradle 元数据。需要检索协程依赖项。为此,请在 "settings.gradle" 文件中添加此行,在所有 "include" 说明之后:
enableFeaturePreview('GRADLE_METADATA')
使用gradle 4.7(较新的版本与当前协程库的元数据不兼容,它们需要 0.4 版本的东西,而当前发布的版本使用 0.3)
在 iOS 模块中:
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1"
在您的公共模块中:
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4"
如果您有 js 模块,由于 gradle 元数据功能,它可能会失败。您可以通过在每个 "repositories" 块 (https://github.com/srs/gradle-node-plugin/issues/301)
之前添加它来修复它
repositories.whenObjectAdded {
if (it instanceof IvyArtifactRepository) {
metadataSources {
artifact()
}
}
}
希望这就够了!
这个问题是这个话题的延续: https://github.com/Kotlin/kotlinx.coroutines/issues/246#issuecomment-407023156
我正在尝试在 Kotlin/Native 项目中使用 org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1
,目标是 iOS。
build.gradle
:
buildscript {
repositories {
mavenCentral()
maven { url "https://dl.bintray.com/jetbrains/kotlin-native-dependencies" }
}
dependencies {
classpath 'org.jetbrains.kotlin:kotlin-native-gradle-plugin:0.8'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.51"
}
}
apply plugin: 'kotlin-platform-native'
repositories {
jcenter()
mavenCentral()
maven { url "https://kotlin.bintray.com/kotlinx" }
}
sourceSets {
main {
component {
target 'ios_arm32', 'ios_arm64', 'ios_x64'
outputKinds = [KLIBRARY]
}
}
}
dependencies {
expectedBy project(':common')
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1"
}
kotlinx:kotlinx-coroutines-core-native
依赖项似乎不起作用,因为会产生如下构建错误:
error: unresolved reference: coroutines
import kotlinx.coroutines.experimental.*
^
如果我手动包含 org.jetbrains.kotlinx:kotlinx-coroutines-core-native_release_ios_x64:0.10.3-native
等工件依赖项,则会出现编译器异常:
exception: java.lang.IllegalStateException: Could not find "atomicfu-native"
此错误仍然存在,即使我也添加了 org.jetbrains.kotlinx:atomicfu-native:0.10.3-native
依赖项。
这是要检查的事项列表(我已经完成了这个,并最终成功了):
启用 Gradle 元数据。需要检索协程依赖项。为此,请在 "settings.gradle" 文件中添加此行,在所有 "include" 说明之后:
enableFeaturePreview('GRADLE_METADATA')
使用gradle 4.7(较新的版本与当前协程库的元数据不兼容,它们需要 0.4 版本的东西,而当前发布的版本使用 0.3)
在 iOS 模块中:
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:0.23.4-native-1"
在您的公共模块中:
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.23.4"
如果您有 js 模块,由于 gradle 元数据功能,它可能会失败。您可以通过在每个 "repositories" 块 (https://github.com/srs/gradle-node-plugin/issues/301)
之前添加它来修复它repositories.whenObjectAdded { if (it instanceof IvyArtifactRepository) { metadataSources { artifact() } } }
希望这就够了!