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
相关产品推荐
相关产品推荐

