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

KMM项目iOS模拟器构建失败:Xcode无输出指定Run Script阶段问题

解决KMM项目iOS端脚本构建阶段的警告与失败问题

处理脚本阶段的警告

这个警告是因为Xcode无法判断脚本是否需要重复运行,有两种解决方式:

  1. 添加输出依赖
    • 打开iOS项目的iosApp.xcodeproj(可通过Android Studio的Tools -> iOS -> Open iOS module in Xcode打开)
    • 选中iosApp target,切换到Build Phases标签页
    • 找到名为Run Script的构建阶段,点击Output Files下方的+按钮
    • 如果脚本有实际生成的文件,填入对应路径;如果没有,可添加一个虚拟标记文件,比如$(DERIVED_FILE_DIR)/.kmm_script_marker,让Xcode通过这个文件的存在性判断是否需要执行脚本
  2. 禁用依赖分析
    • 同样在Run Script构建阶段,取消勾选Based on dependency analysis选项,Xcode会在每次构建时都运行该脚本,警告自动消失

排查脚本执行失败的问题

构建失败的核心是脚本执行出错,需先定位具体错误:

  • 查看详细错误日志
    在Xcode中打开Window -> Reports,找到最新的构建记录,点击PhaseScriptExecution Run Script条目,查看脚本执行时的具体报错信息(比如路径错误、命令不存在、权限不足等)
  • 常见问题及解决办法
    • 脚本路径或命令错误:KMM自动生成的脚本通常会调用Gradle命令编译shared模块,检查脚本中的路径是否正确(比如../gradlew的相对路径是否匹配项目结构),手动在终端运行脚本里的Gradle命令,验证能否成功执行
    • 权限问题:如果提示"Permission denied",给脚本添加执行权限,在终端运行:
      chmod +x /Users/moataz/AndroidStudioProjects/MyApplication/build/ios/iosApp.build/Debug-iphonesimulator/iosApp.build/Script-7555FFB5242A651A00829871.sh
      
      之后手动运行该脚本,确认是否能正常执行
    • shared模块编译失败:先单独编译shared模块的iOS目标,在Android Studio的Gradle面板中找到shared -> Tasks -> ios,选择对应架构的framework编译任务(比如iosSimulatorArm64DebugFramework),确认能否成功生成framework文件
    • 缓存问题:清理Xcode的构建缓存(Product -> Clean Build Folder),同时清理Android Studio的缓存(File -> Invalidate Caches...),再重新尝试构建

内容的提问来源于stack exchange,提问作者Moataz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:00:07