将 Kotlin 多平台模块添加为依赖项时出错:"Android project without build variants, and cannot be built."



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

错误:模块"my-core"是一个没有构建的Android项目 变体,并且无法构建。请修复模块的配置 ,然后再次同步项目。

"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 sourceset 中具有本机依赖项:io.ktor:ktor-client-serialization-native:$ktor_version元数据系统无法为此依赖项找到合适的目标,这可能会导致您演示的错误。这只是我的猜测。

替换,io.ktor:ktor-client-serialization-native:$ktor_versionio.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项目。

最新更新