KMM项目报错:':shared'模块找不到'embedAndSignAppleFrameworkForXcode'
问题描述
在KMM项目构建流程中触发报错,提示无法找到embedAndSignAppleFrameworkForXcode Gradle任务。
环境信息
System OS: macOS (13.0.1) CPU: Apple M1 Java Java (openjdk version "11.0.16.1" 2022-08-12) Location: /opt/homebrew/opt/openjdk@11/bin/java JAVA_HOME=/opt/homebrew/opt/openjdk@11 Android Studio Android Studio (2021.3) Location: /Applications/Android Studio.app Bundled Java: openjdk 11.0.13 2021-10-19 Kotlin Plugin: 213-1.7.20-release-for-android-studio-AS6777.52 Kotlin Multiplatform Mobile Plugin: 0.3.4(213-1.7.11-357-IJ)-241 Xcode Xcode (14.1) Location: /Applications/Xcode.app
shared模块核心Gradle配置
kotlin { android() listOf( iosArm64(), ).forEach { it.binaries.framework { baseName = "shared" } } sourceSets { val commonMain by getting { dependencies { implementation(project(SharedModule.networkMock)) implementation(project(SharedModule.storage)) } } val androidMain by getting { dependencies { implementation(Dependencies.hiltAndroid) implementation(Dependencies.okHttp) configurations.kaptHilt() } } val iosArm64Main by getting val iosMain by creating { dependsOn(commonMain) iosArm64Main.dependsOn(this) dependencies { implementation(Dependencies.coroutinesNative) } } } }
已尝试但无效的操作
- 通过Rosetta运行Xcode
- 从项目架构中排除arm64
- 关闭Android Studio并杀死Java进程后重新执行构建
- 在模拟器与真机环境分别尝试运行
可行解决方案
1. 对齐Kotlin与KMM插件版本兼容性
当前使用的Kotlin插件(1.7.20)与KMM插件(0.3.4)版本存在兼容性偏差,建议同步升级两者到匹配版本:
- 将Kotlin插件升级至1.7.22及以上
- 对应更新KMM插件至兼容的最新版本(可在Android Studio插件市场查看适配版本)
2. 补充iOS模拟器架构配置
当前仅配置了真机架构iosArm64(),缺少M1芯片对应的模拟器架构iosSimulatorArm64(),这会导致Gradle生成的任务集不完整。修改shared模块的kotlin配置块:
kotlin { android() listOf( iosArm64(), iosSimulatorArm64() // 添加M1模拟器架构支持 ).forEach { it.binaries.framework { baseName = "shared" isStatic = true // 可选:设置为静态框架,简化Xcode引用流程 } } // 原sourceSets配置保持不变 }
3. 清理构建缓存并重新生成任务
执行以下命令清理缓存并验证任务是否生成:
./gradlew clean ./gradlew :shared:embedAndSignAppleFrameworkForXcode
若任务仍不存在,建议将Gradle版本升级至7.4及以上(与Kotlin 1.7.x系列插件兼容)。
4. 校验Xcode中Gradle任务引用
打开Xcode项目,进入构建阶段查看调用Gradle的脚本,确保:
- 模块路径正确指向
:shared - 任务名称
embedAndSignAppleFrameworkForXcode拼写无误
内容的提问来源于stack exchange,提问作者Sergei Kirienko
相关产品推荐
相关产品推荐

