首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建iOS框架时找不到Ktor和kotlinx依赖项

构建iOS框架时找不到Ktor和kotlinx依赖项
EN

Stack Overflow用户
提问于 2019-01-17 00:27:12
回答 2查看 1.3K关注 0票数 5

我正在尝试在我的Kotlin/原生项目中包含对ktorkotlinx (确切地说是serializationcoroutines )的支持。所有的库都可以在项目的安卓版本上运行,但当我尝试编译Xcode项目时,我收到错误消息,指出找不到kotlinx.serializationkotlinx.coroutines库:

代码语言:javascript
复制
src/commonMain/kotlin/.../.kt:4:16: error: unresolved reference: coroutines
import kotlinx.coroutines.CoroutineDispatcher
               ^
src/commonMain/kotlin/.../.kt:5:16: error: unresolved reference: serialization
import kotlinx.serialization.json.JSON

这是我的项目的gradle文件:

代码语言:javascript
复制
plugins {
    id 'kotlin-multiplatform' version '1.3.11'
    id 'kotlinx-serialization' version '1.3.0'
}

ext {
    ktor_version = '1.0.1'
    kotlinx_version = '1.1.0'
}

repositories {
    maven { url "https://kotlin.bintray.com/ktor" }
    maven { url "https://kotlin.bintray.com/kotlinx" }
    google()
    jcenter()
    mavenCentral()
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'

configurations {
    compilerPlugin
}

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "org.jetbrains.kotlin.mpp_app_android"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'

}

kotlin {
    targets {
        fromPreset(presets.android, 'android')
        // This preset is for iPhone emulator
        // Switch here to presets.iosArm64 (or iosArm32) to build library for iPhone device
        fromPreset(presets.iosX64, 'ios') {
            compilations.main.outputKinds('FRAMEWORK')
        }
    }
    sourceSets {
        commonMain {
            dependencies {
                implementation 'commons-codec:commons-codec:1.10'
                implementation 'org.jetbrains.kotlin:kotlin-stdlib-common'
                implementation("io.ktor:ktor-client:$ktor_version")
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlinx_version"
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.9.1"
            }
        }
        commonTest {
            dependencies {
                implementation 'org.jetbrains.kotlin:kotlin-test-common'
                implementation 'org.jetbrains.kotlin:kotlin-test-annotations-common'
            }
        }
        androidMain {
            dependencies {
                implementation 'org.jetbrains.kotlin:kotlin-stdlib'
                implementation("io.ktor:ktor-client-android:$ktor_version")
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinx_version"
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.9.1"
            }
        }
        androidTest {
            dependencies {
                implementation 'org.jetbrains.kotlin:kotlin-test'
                implementation 'org.jetbrains.kotlin:kotlin-test-junit'
            }
        }
        iosMain {
            dependencies {
                implementation("io.ktor:ktor-client-ios:$ktor_version")
                implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$kotlinx_version"
                implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:0.9.1"
            }
        }
        iosTest {
        }
    }
}

// This task attaches native framework built from ios module to Xcode project
// (see iosApp directory). Don't run this task directly,
// Xcode runs this task itself during its build process.
// Before opening the project from iosApp directory in Xcode,
// make sure all Gradle infrastructure exists (gradle.wrapper, gradlew).
task copyFramework {
    def buildType = project.findProperty("kotlin.build.type") ?: "DEBUG"
    def target = project.findProperty("kotlin.target") ?: "ios"
    dependsOn "link${buildType.toLowerCase().capitalize()}Framework${target.capitalize()}"

    doLast {
        def srcFile = kotlin.targets."$target".compilations.main.getBinary("FRAMEWORK", buildType)
        def targetDir = getProperty("configuration.build.dir")
        copy {
            from srcFile.parent
            into targetDir
            include 'app.framework/**'
            include 'app.framework.dSYM'
        }
    }
}

如有任何帮助,将不胜感激,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 00:42:09

确保settings.gradle文件中包含enableFeaturePreview("GRADLE_METADATA")。一旦我添加了这一行,我就能够从Xcode编译。

票数 5
EN

Stack Overflow用户

发布于 2020-03-05 23:35:37

我也遇到了这个问题。它突然出现在一个我已经研究了几个月的项目中。我在settings.gradle中设置了enableFeaturePreview('GRADLE_METADATA')。这是怎么回事呢?这真的很令人沮丧;我的项目突然毫无理由地停滞不前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54221331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档