KMM中composeApp:embedAndSignAppleFrameworkForXcode未更新问题求助
解决Xcode嵌入ComposeApp模块的构建问题
核心问题排查与修复
1. 彻底清理缓存(解决代码更新不生效+模块找不到)
- Xcode端:
- 执行
Cmd+Shift+K清理当前构建文件夹 - 执行
Cmd+Option+Shift+K清理Derived Data,或手动删除~/Library/Developer/Xcode/DerivedData下对应项目的文件夹(自动清理可能有残留)
- 执行
- Gradle端:
- 在Android Studio中执行
File -> Invalidate Caches...,选择「Invalidate and Restart」 - 终端执行
cd 项目根目录 && ./gradlew clean,必要时可删除~/.gradle/caches下的缓存文件
- 在Android Studio中执行
2. 检查「Compile Kotlin framework」脚本有效性
- 验证路径正确性:在脚本开头添加调试命令,确认是否进入了正确的项目根目录:
如果输出里没有composeApp,说明echo "Current directory: $(pwd)" ls -la # 查看是否存在composeApp文件夹 cd "$SRCROOT/.." echo "After cd directory: $(pwd)" ls -la$SRCROOT的路径不对,需手动调整cd的目标路径(比如改成cd "$SRCROOT/../../",根据项目结构调整) - 排查环境变量拦截:脚本中如果
OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED被设为YES,会直接跳过Gradle构建。在脚本开头添加:
如果输出为echo "OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED: $OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED"YES,去Xcode的Build Settings中搜索该环境变量,将其删除或设为NO
3. 调整Xcode构建顺序与依赖设置
- 确保脚本优先执行:在Xcode的
Build Phases中,将「Compile Kotlin framework」脚本拖动到Compile Sources上方,保证Kotlin框架在iOS代码编译前生成 - 检查框架搜索路径:在
Build Settings中搜索Framework Search Paths,确认包含以下路径(根据模块名调整):
勾选$(SRCROOT)/../composeApp/build/xcode-frameworks/$(CONFIGURATION)/$(SDK_NAME)Recursive,确保Xcode能找到生成的框架
在Android Studio手动运行Gradle脚本关联
完全可以手动触发框架构建,步骤如下:
- 打开Android Studio的Gradle面板(右侧边栏)
- 展开项目 ->
composeApp->Tasks->apple - 找到并双击
embedAndSignAppleFrameworkForXcode任务,等待执行完成 - 回到Xcode重新构建即可(此时Xcode会使用AS生成的最新框架)
如果手动运行后Xcode仍找不到模块,可以删除Xcode中已添加的ComposeApp.framework引用,重新从composeApp/build/xcode-frameworks/当前配置/对应SDK路径下添加框架。
内容的提问来源于stack exchange,提问作者Jakub Kostka
相关产品推荐
相关产品推荐

