Kotlin MPP-IntelliJ上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'

我正在尝试用一些Koltin MPP模块构建一个多模块Gradle项目

我在尝试构建Kotlin MPP模块时遇到了一个非常奇怪的问题。所有指定的依赖项都已解决,它们可以从Gradle配置中看到,但当我尝试使用移动目标(Android和iOS)中的某些类时,我无法做到这一点。这些类根本无法解析

这是有关模块的gradle生成文件:

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库上迁移到了新版本,并重新创建了有故障的模块,但不知怎么的,它都被点击了。