Kotlin 多平台项目依赖于另一个带有 cocoapods 的项目
Posted
技术标签:
【中文标题】Kotlin 多平台项目依赖于另一个带有 cocoapods 的项目【英文标题】:Kotlin multiplatform project depending on another one with cocoapods 【发布时间】:2021-12-03 06:28:21 【问题描述】:我有一个 kotlin multipltform 库,里面有几个 cocoapods
cocoapods
....
pod("gRPC/GRPCCore", grpcVersion)
pod("gRPC-ProtoRPC", grpcVersion)
pod("Protobuf", "3.15.8")
// etc
我将此库发布到工件(maven),并且 ios 目标包含用于 cinterop'ed pod 的所有 klib。
我有第二个 Kotlin 多平台库,我希望在其中使用之前的“核心”库。
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 模块。
例如:ld: framework not found gRPC_ProtoRPC
我也尝试重新声明 pod 无济于事。
我正在尝试做的事情是否可能?有人有什么建议吗?
注意:我不是 iOS 开发人员,如果我的理解不正确,请严厉批评
【问题讨论】:
【参考方案1】:对于处理基本库依赖于 cocoapods 插件的嵌套多平台库的任何人,我必须通过链接器选项链接所有框架,并重新定义所有 cocoapods,以便框架可用于链接。
【讨论】:
更多详情请见youtrack.jetbrains.com/issue/KT-42250【参考方案2】:在引用另一个 KMM 项目时,您是否尝试过以下代码?下面的代码 sn-p 来自Kotlin's documentation
kotlin
sourceSets["commonMain"].dependencies
implementation(project(":some-other-multiplatform-module"))
sourceSets["androidMain"].dependencies
//platform part of :some-other-multiplatform-module will be added automatically
【讨论】:
除了从 maven 引用多平台库之外,我基本上在做同样的事情。以上是关于Kotlin 多平台项目依赖于另一个带有 cocoapods 的项目的主要内容,如果未能解决你的问题,请参考以下文章
如何在多平台多项目 Kotlin 构建中向另一个项目的测试添加依赖项
如何使用单个build.gradle配置向kotlin多平台项目添加依赖项