我有一个其他KMM项目正在使用的Kotlin多平台库。我正在尝试构建其中一个KMM项目的iOS应用程序,但首先我需要将库二进制文件发布到Maven存储库。
当尝试构建iOS ARM 64二进制文件时,我使用的一个库的Unresolved reference
失败了。它只在gradle任务compileIosMainKotlinMetadata
上失败,构建项目工作得很好,但由于这个错误,我无法生成二进制文件。
这是我常用的多平台库设置gradle:(kotlin-multiplatform-lib-setup
)
plugins {
kotlin("multiplatform")
id("com.android.library")
}
kotlin {
android {
publishAllLibraryVariants()
}
ios()
sourceSets {
commonTest {
dependencies {
implementation(kotlin("test-common"))
implementation(kotlin("test-annotations-common"))
}
}
val androidTest by getting {
dependencies {
implementation(kotlin("test-junit"))
implementation("junit:junit:4.13.2")
}
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
kotlinOptions.jvmTarget = "1.8"
}
}
android {
compileSdkVersion(31)
defaultConfig {
minSdkVersion(23)
targetSdkVersion(31)
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
sourceSets {
named("main") {
manifest.srcFile("src/androidMain/AndroidManifest.xml")
res.srcDirs("src/androidMain/res")
}
}
}
这是我正在开发的模块的build.gradle.kts:
plugins {
id("kotlin-multiplatform-lib-setup")
id("publish-setup")
}
publishing {
publications.withType<MavenPublication> {
groupId = "${Constants.artifactGroup}.architecture"
artifactId = "core"
version = Constants.artifactVersion
}
}
kotlin {
ios()
sourceSets {
commonMain {
dependencies {
implementation(Deps.Badoo.reaktive)
implementation(Deps.Badoo.coroutinesInterop)
implementation(Deps.KotlinX.Coroutines.core)
implementation(Deps.uuid)
}
}
commonTest {
dependencies {
implementation(Deps.Badoo.reaktive)
implementation(Deps.KotlinX.Coroutines.core)
implementation(Deps.Badoo.reaktiveTesting)
}
}
iosMain {
dependencies {
implementation(Deps.Badoo.reaktive)
}
}
}
}
我也试过加法没有结果
kotlin {
ios {
binaries {
framework {
export(Deps.Badoo.reaktive)
transitiveExport = true
}
}
}
}
1条答案
按热度按时间kognpnkq1#
默认情况下,iosMain源集在模块的build.gradle中不可用。因此,不要将
ios()
添加到源集中,而是添加三个iOS配置并且,不要只为iosMain提供依赖关系,而是包括所有配置
不如这样,
通过这种方式,它添加了一个新的公共依赖项源集,用于处理所有iOS配置。