【问题标题】:Error while adding Kotlin Multiplatform module as dependency: "Android project without build variants, and cannot be built."添加 Kotlin Multiplatform 模块作为依赖项时出错:“没有构建变体的 Android 项目,无法构建。”
【发布时间】:2020-05-27 03:59:54
【问题描述】:

我正在尝试将 Kotlin-Multiplatform 库添加为 Android 项目的依赖项。我收到以下错误:

错误:模块“my-core”是一个没有构建的 Android 项目 变体,并且无法构建。请修复模块的配置 在 build.gradle 文件中并再次同步项目。

'my-core' Kotlin-Multiplatform 库的 build.gradle 如下:

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath 'com.squareup.sqldelight:gradle-plugin:1.3.0'
        classpath 'com.android.tools.build:gradle:3.6.3'
    }
}

plugins {
    id 'org.jetbrains.kotlin.multiplatform' version '1.3.72'
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.3.72'
}
repositories {
    mavenCentral()
    jcenter()
    google()
}

def ktor_version = '1.3.2'
def sqldeligh_version = '1.3.0'

group 'com.zoho.im.core'
version '0.0.1'

apply plugin: 'com.squareup.sqldelight'
apply plugin: 'maven-publish'
apply plugin: 'com.android.library'

android {
    compileSdkVersion(29)
    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 29
        versionCode = 1
        versionName = "0.0.1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        //This is for MultiplatformSettings
        debug {
            // MPP libraries don't currently get this resolution automatically
            matchingFallbacks = ['release']
        }
    }
}

kotlin {
    android()
    // This is for iPhone simulator
    // Switch here to iosArm64 (or iosArm32) to build library for iPhone device
    iosX64("ios") {
        binaries {
            framework()
        }
    }
    sourceSets {
        commonMain {
            dependencies {
                implementation kotlin('stdlib-common')
                implementation "io.ktor:ktor-client-core:$ktor_version"
                implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
            }
        }
        commonTest {
            dependencies {
                implementation kotlin('test-common')
                implementation kotlin('test-annotations-common')
            }
        }
        androidMain {
            dependencies {
                implementation kotlin('stdlib')
                implementation "io.ktor:ktor-client-okhttp:$ktor_version"
                implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
                implementation "com.squareup.sqldelight:android-driver:$sqldeligh_version"
            }
        }
        iosMain {
            dependencies {
                implementation "io.ktor:ktor-client-ios:$ktor_version"
                implementation "io.ktor:ktor-client-serialization-native:$ktor_version"
                implementation "com.squareup.sqldelight:native-driver:$sqldeligh_version"
            }
        }
    }
}

sqldelight {
    IMDatabase {
        packageName = "com.harley.core"
    }
}

configurations {
    compileClasspath
}

我导入的android项目只是一个简单的新项目。请指教

【问题讨论】:

  • 您在 commonMain 上使用本机序列化
  • 谢谢@KurtAcosta。你指出的是问题所在。正如我在回答中指出的那样,这些更改解决了这个问题。但仍然存在一些问题。请检查stackoverflow.com/a/62038809/10506244

标签: android kotlin gradle build.gradle kotlin-multiplatform


【解决方案1】:

这可能是因为您在 commonMain 源集中具有本机依赖项:io.ktor:ktor-client-serialization-native:$ktor_version 元数据系统将无法为此依赖项找到合适的目标,这可能会导致您演示的错误。这只是我的猜测。

【讨论】:

    【解决方案2】:

    替换,io.ktor:ktor-client-serialization-native:$ktor_version io.ktor:ktor-client-serialization:$ktor_version 解决了这个问题并生成了 aar 文件。

    旁注:这个 .aar 文件没有打包 androidMain 依赖项。我必须手动添加这些依赖项(io.ktor:ktor-client-okhttp:$ktor_version, io.ktor:ktor-client-serialization-jvm:$ktor_version, com.squareup.sqldelight:android-driver:$sqldeligh_version)消费android项目。

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 2013-08-05
      • 2014-10-18
      • 2012-01-22
      相关资源
      最近更新 更多