Kotlin MPP-IntelliJ上Gradle的构建问题
我正在尝试用一些Koltin MPP模块构建一个多模块Gradle项目 我在尝试构建Kotlin MPP模块时遇到了一个非常奇怪的问题。所有指定的依赖项都已解决,它们可以从Gradle配置中看到,但当我尝试使用移动目标(Android和iOS)中的某些类时,我无法做到这一点。这些类根本无法解析 这是有关模块的gradle生成文件:Kotlin MPP-IntelliJ上Gradle的构建问题,gradle,intellij-idea,kotlin-multiplatform,Gradle,Intellij Idea,Kotlin Multiplatform,我正在尝试用一些Koltin MPP模块构建一个多模块Gradle项目 我在尝试构建Kotlin MPP模块时遇到了一个非常奇怪的问题。所有指定的依赖项都已解决,它们可以从Gradle配置中看到,但当我尝试使用移动目标(Android和iOS)中的某些类时,我无法做到这一点。这些类根本无法解析 这是有关模块的gradle生成文件: plugins { id 'com.android.library' id 'org.jetbrains.kotlin.multiplatform'
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.multiplatform'
id 'org.jetbrains.kotlin.plugin.serialization'
}
group 'bg.dalexiev'
version '0.0.1'
def ktor_version = '1.3.1'
def serialization_version = '0.14.0'
def coroutines_version = '1.3.3'
def timber_version = '4.7.1'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 21
versionName '0.0.1'
versionCode 1
}
sourceSets {
main {
manifest.srcFile 'src/androidMain/AndroidManifest.xml'
java.srcDirs = ['src/androidMain/kotlin']
res.srcDirs = ['src/androidMain/res']
}
test {
java.srcDirs = ['src/androidTest/kotlin']
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
google()
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
implementation "io.ktor:ktor-client-json-jvm:$ktor_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
implementation "io.ktor:ktor-client-logging-jvm:$ktor_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serialization_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
implementation "com.jakewharton.timber:timber:$timber_version"
testImplementation("junit:junit:4.12")
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
}
kotlin {
android("android")
def sdkName = System.getenv('SDK_NAME')
def iosTarget = sdkName?.startsWith('iphoneos') ? presets.iosArm64 : presets.iosX64
targetFromPreset(iosTarget, "ios") {
binaries {
framework()
}
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
implementation "io.ktor:ktor-client-core:$ktor_version"
implementation "io.ktor:ktor-client-json:$ktor_version"
implementation "io.ktor:ktor-client-serialization:$ktor_version"
implementation "io.ktor:ktor-client-logging:$ktor_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serialization_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
iosMain {
dependencies {
implementation "io.ktor:ktor-client-ios:$ktor_version"
implementation "io.ktor:ktor-client-json-native:$ktor_version"
implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
implementation "io.ktor:ktor-client-logging-native:$ktor_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serialization_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutines_version"
}
}
iosTest {
}
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
configurations {
compileClasspath
}
我能够用相同的配置构建一个独立的gradle项目,没有任何问题。任何帮助和建议都将不胜感激。您的android依赖项位于错误的区块。将build.gradle重构为
插件{
id'com.android.library'
id“org.jetbrains.kotlin.multiplatform”
id'org.jetbrains.kotlin.plugin.serialization'
}
“背景dalexiev”组
版本“0.0.1”
def ktor_版本='1.3.1'
def序列化_版本='0.14.0'
def协程_版本='1.3.3'
def U版本='4.7.1'
安卓{
编译DK29版
默认配置{
明斯克版本21
版本名称“0.0.1”
版本代码1
}
源集{
主要{
manifest.src文件“src/androidMain/AndroidManifest.xml”
java.srcDirs=['src/androidMain/kotlin']
res.srcDirs=['src/androidMain/res']
}
试验{
java.srcDirs=['src/androidTest/kotlin']
}
}
建筑类型{
释放{
minifyEnabled true
proguard文件(GetDefaultProGuard文件(“proguard android optimize.txt”),“proguard rules.pro”)
}
}
编译选项{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
存储库{
谷歌()
}
科特林{
安卓(“安卓”)
def sdkName=System.getenv('SDK_NAME'))
def iosTarget=sdkName?.startsWith('iphoneos')?presets.iosArm64:presets.iosX64
targetFromPreset(iosTarget,“ios”){
二进制文件{
框架()
}
}
源集{
普通人{
依赖关系{
实现kotlin('stdlib-common')
实现“io.ktor:ktor客户端核心:$ktor_版本”
实现“io.ktor:ktor客户端json:$ktor_版本”
实现“io.ktor:ktor客户端序列化:$ktor_版本”
实现“io.ktor:ktor客户端日志:$ktor_版本”
实现“org.jetbrains.kotlinx:kotlinx序列化运行时公共:$serialization\u version”
实现“org.jetbrains.kotlinx:kotlinx协程核心:$coroutines\u version”
}
}
普通测试{
依赖关系{
实现kotlin(“测试通用”)
实现kotlin('test-annotations-common'))
}
}
androidMain.dependencies{
实现(“org.jetbrains.kotlin:kotlin-stdlib-jdk8”)
实现“io.ktor:ktor客户端okhttp:$ktor_版本”
实现“io.ktor:ktor客户端json jvm:$ktor_版本”
实现“io.ktor:ktor客户端序列化jvm:$ktor_版本”
实现“io.ktor:ktor客户端日志jvm:$ktor_版本”
实现“org.jetbrains.kotlinx:kotlinx序列化运行时:$serialization\u version”
实现“org.jetbrains.kotlinx:kotlinx协同程序android:$coroutines\u version”
实现“com.jakewharton.timber:timber:$timber\u版本”
}
androidTest.dependencies{
实现(“junit:junit:4.12”)
实现(“org.jetbrains.kotlin:kotlin测试”)
实现(“org.jetbrains.kotlin:kotlin-test-junit”)
}
伊斯曼{
依赖关系{
实现“io.ktor:ktor客户端ios:$ktor_版本”
实现“io.ktor:ktor客户端json本机:$ktor_版本”
实现“io.ktor:ktor客户端序列化本机:$ktor_版本”
实现“io.ktor:ktor客户端日志本机:$ktor_版本”
实现“org.jetbrains.kotlinx:kotlinx序列化运行时本机:$serialization\u version”
实现“org.jetbrains.kotlinx:kotlinx协程核心本机:$coroutines\u版本”
}
}
失败的{
}
}
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile){
科特洛普斯酒店{
jvmTarget=“1.8”
}
}
配置{
编译路径
}
IDE的哪个版本?你肯定是最新的。我假设Kotlin是1.3.61?@KevinGalligan Kotlin的版本实际上是1.3.70。我使用的是IntelliJ Idea 2019.3.3 Community eddition。我非常确定您列出的本机库与1.3.70不兼容,因此我不知道gradle构建如何工作。例如,native上的ktor 1.3.1适用于Kotlin 1.3.6x。本机版本仅与相应的主Kotlin兼容versions@KevinGalligan你说得对。我在所有mpp库上迁移到了新版本,并重新创建了有故障的模块,但不知怎么的,它都被点击了。