0

我有一个 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 开发人员,所以如果我的理解不正确,请严厉批评

4

2 回答 2

1

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

于 2021-10-22T07:01:54.960 回答
0

在引用另一个 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
  }
}
于 2021-10-15T08:51:39.467 回答