【问题标题】:Cocoapod dependency in iosMain of a Kotlin Multiplatform project, cocoapod unresolved referenceKotlin Multiplatform 项目的 iosMain 中的 Cocoapod 依赖项,cocoapod 未解析参考
【发布时间】:2021-09-29 17:57:35
【问题描述】:

我正在尝试围绕 AWS Amplify 创建一个包装器以用于我的项目。我的共享(公共)模块中有一个名为 Amplify 的模块。这里我在官方文档中integrated cocoapods as instructed。但是当我尝试从 iosMain 导入任何内容时,我不断收到Unresolved reference: cocoapods

我的项目结构如下

通用模块(共享)
|- 根模块
|- 其他功能
|- 放大包装模块

在根模块中我有

kotlin {
    ios {
        binaries {
            framework {
                baseName = "Framework"
                linkerOpts.add("-lsqlite3")
                export(project(":common:main"))
            }
        }
    }

以及放大模块中 cocoapods 的设置

import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget

plugins {
    id("multiplatform-setup") // this is from buildSrc, it adds the multiplatform plugin
    id("android-setup")
    id("org.jetbrains.kotlin.native.cocoapods")
    kotlin("plugin.serialization") version "1.5.10"
}

version = "1.0"


kotlin {
    sourceSets {
        named("commonMain") {
            dependencies {
            }
        }
    }

    cocoapods {
        summary = "Amplify wrapper for KMP project"
        homepage = "Link to a Kotlin/Native module homepage"
        frameworkName = "AmplifyKMP"

        pod("Amplify")
        pod("AmplifyPlugins/AWSCognitoAuthPlugin")
        pod("AmplifyPlugins/AWSPinpointAnalyticsPlugin")
    }
}

我的想法是,我可以从 commonMain 代码中公开我的包装器,这将调用 Amplify Android 和 Amplify IOS 库中的实际实现。我的第一个问题是 cocoapods 未解决,其次,官方文档和 github 中的所有示例都在主模块(在我的情况下为根模块)中有 cocoapods,它们从那里导出框架,我不确定我的方法是否可行.

【问题讨论】:

    标签: kotlin cocoapods kotlin-multiplatform


    【解决方案1】:

    第一个问题很简单。您需要将kotlin("native.cocoapods") 添加到您的plugins 部分。

    第二个,子模块可以使用 cinterop 导入 pod 并使它们可用于依赖它们的模块吗?我没试过。从理论上讲,cocoapods 插件应该能够将 pod 定义导入 kotlin。但是,cocoapods Kotlin gradle 插件(又名kotlin("native.cocoapods"))将配置 ios 目标以创建框架。这可能会导致依赖配置出现问题。

    在放大模块中,我没有看到您正在定义任何 iOS 目标,因此您可能需要这样做,但该配置将被 kotlin("native.cocoapods") 更改。您可能需要自己介入并修改它。您可以介入并在 gradle 中执行此操作,但我会准备花一些时间进行调整。

    https://github.com/touchlab/KaMPKit/blob/main/shared/build.gradle.kts#L114

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 2021-10-10
      • 2020-12-08
      • 1970-01-01
      • 2014-08-11
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多