0

在 Android 世界中,我可以在一个模块中添加一个依赖项,对于任何将此模块添加为依赖项的模块,它都可以使用该依赖项中的 API。例如 facebook sdk -> utils 模块 -> foo 模块 -> 主应用程序模块,foo 模块和主应用程序模块也可以使用 facebook sdk API。

我如何在多平台世界(或 iOS 世界)中做同样的事情?facebook iOS sdk pod -> utils 模块 -> foo 模块 -> iOS 主项目

我尝试仅在 utils 模块中添加 pod,但 foo 和 main 都无法访问 facebook iOS API。如果我在 foo 模块中添加相同的 pod,它也无法访问 Facebook API。

或者我应该使用 cocoapods 以外的其他依赖管理工具吗?

4

2 回答 2

0

我猜您最终希望将依赖项导出到二进制文件。但是,我不确定这是否适用于 Kotlin 模块之间的依赖关系。对于它们之间的依赖关系,我建议使用api依赖关系链接并为每个模块单独添加 pod。
我的意思是,核心模块的 build.gradle.kts 应该只包含

...
kotlin {
    ios()

    cocoapods {
        ios.deploymentTarget = "13.5"

        summary = "CocoaPods test library"
        homepage = "https://github.com/JetBrains/kotlin"

        pod("FBSDKCoreKit")
    }
}
...

login 模块同时具有 cocoapods 和核心依赖项:

...
kotlin {
    ios()

    framework {
            // Mandatory properties
            // Configure fields required by CocoaPods.
            summary = "Some description for a Kotlin/Native module"
            homepage = "Link to a Kotlin/Native module homepage"
            // Framework name configuration. Use this property instead of deprecated 'frameworkName'
            baseName = "MyFramework"

            // Optional properties
            // (Optional) Dynamic framework support
            isStatic = false
            // (Optional) Dependency export
            export(project(":core"))
            transitiveExport = true
            // (Optional) Bitcode embedding
            embedBitcode(BITCODE)
        }
        pod("FBSDKCoreKit")
        pod("FBSDKLoginKit")
    }
...
    sourceSets {
        val iosMain by getting {
            dependencies {
                api(project(":core"))
            }
        }
    }
}

...
于 2022-01-21T08:58:36.813 回答
0

您只能导出单个 Kotlin Xcode 框架。它是一种具有所有依赖项的“大二进制文件”。如果“utils 模块”和“foo 模块”都是 Kotlin 模块,您应该将它们收集到一个单独的 Kotlin Xcode 框架中。

于 2021-12-23T01:31:08.957 回答