You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMP项目Amplify子模块配置CocoaPods出现Unresolved reference报错

问题修复方案

1. Unresolved reference: cocoapods错误修复

导致该错误的核心原因是amplify模块的Gradle配置缺少必要的iOS目标声明,Kotlin Cocoapods插件只有在模块声明了Kotlin/Native的iOS相关目标后才会生成cocoapods扩展配置,按以下步骤修改:

  • 统一项目所有Kotlin相关插件的版本:你当前amplify模块的序列化插件硬编码了1.5.10版本,需确保该版本和buildSrc中multiplatform-setup插件引入的Kotlin多平台插件版本完全一致,避免版本不兼容导致扩展无法识别。
  • 在amplify模块的kotlin配置块中补充iOS目标声明,修改后配置如下:
kotlin {
    // 补充iOS目标声明,和根模块的iOS目标配置保持一致
    ios()
    sourceSets {
        named("commonMain") {
            dependencies {
            }
        }
        // 可选:补充iosMain源集配置,用于编写iOS端actual实现
        named("iosMain") {
            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")
    }
}

修改完成后重新同步Gradle即可识别cocoapods配置,在iosMain中导入import cocoapods.Amplify.*即可调用原生Amplify接口。

2. 子模块配置CocoaPods方案可行性说明

你当前的方案完全可行,无需将所有CocoaPods依赖都配置到根导出模块中,只需要补充根模块的导出配置即可:
修改根模块的framework配置,增加amplify模块的导出声明,开启传递导出,同时透传依赖的链接参数:

kotlin {
    ios {
        binaries {
            framework {
                baseName = "Framework"
                linkerOpts.add("-lsqlite3")
                export(project(":common:main"))
                // 替换为你amplify模块的实际项目路径
                export(project(":shared:amplify"))
                // 开启传递导出,将amplify模块的符号和依赖都导出到最终framework
                transitiveExport = true
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Nikola-Milovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 06:51:01