Kotlin MPP - сборка проблем с Gradle на IntelliJ - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь создать многомодульный проект Gradle с некоторыми модулями Koltin MPP.

У меня очень странная проблема при попытке построить модуль 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 с той же конфигурацией без проблем. Буду признателен за любую помощь и совет.

1 Ответ

0 голосов
/ 24 апреля 2020

Ваши android зависимости находятся в неправильном блоке. Переведите ваш build.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()
}

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')
            }
        }

        androidMain.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"
        }

        androidTest.dependencies {
            implementation("junit:junit:4.12")
            implementation("org.jetbrains.kotlin:kotlin-test")
            implementation("org.jetbrains.kotlin:kotlin-test-junit")
        }

        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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...