Kotlin多平台项目依赖于另一个cocoapods



我有一个kotlin multiform库,它有几个cocoapods

cocoapods {
....
pod("gRPC/GRPCCore", grpcVersion)
pod("gRPC-ProtoRPC", grpcVersion)
pod("Protobuf", "3.15.8")
// etc
}

我将这个库发布到artifactory (maven), ios目标包含了所有用于cinterop'ed pod的klib。

我有第二个Kotlin多平台库,我希望使用以前的"core";图书馆。

iOSTarget("ios") {
binaries {
framework {
baseName = "SecondSharedLib"
export("first.shared.lib:1.0.0")
xcf.add(this)
}
}
}
sourceSets {
val commonMain by getting {
dependencies {
api("first.shared.lib:1.0.0")
}
}
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val androidMain by getting {
dependencies {
}
}
val androidTest by getting {
dependencies {
implementation("junit:junit:4.13.2")
}
}
val iosMain by getting {
dependencies {
}
}
val iosTest by getting
}

链接ios时,pod模块找不到

ex:ld: framework not found gRPC_ProtoRPC

我还试着重新声明pod,但无济于事。

我想做的事情是可能的吗?有人有什么建议吗?

注意:我不是一个iOS开发者,所以如果我的理解是苛刻的

对于任何处理嵌套多平台库的人,其中基本库依赖于cocoapods插件,我必须通过链接器选项链接所有框架,并重新定义所有cocoapods,以便框架可用于链接。

您是否在引用另一个KMM项目时尝试过下面的代码?下面的代码片段来自Kotlin的文档

kotlin {
sourceSets["commonMain"].dependencies {
implementation(project(":some-other-multiplatform-module"))
}
sourceSets["androidMain"].dependencies {
//platform part of :some-other-multiplatform-module will be added automatically
}
}

最新更新