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

使用Fastlane执行snapshots时UITest崩溃,Xcode运行正常求排查

解决Fastlane snapshots lane运行UITests崩溃的问题

我之前也碰到过类似的Fastlane snapshots和Xcode直接运行UITests结果不一致的情况,结合你提到的错误信息,给你几个实用的排查和解决方向:

  • 检查Xcode命令行工具与Fastlane的匹配性
    有时候Fastlane调用的Xcode版本和你手动打开的Xcode不是同一个,这会导致环境差异。

    • 用xcode-select -p查看当前命令行工具指向的Xcode路径
    • 如果和你日常使用的Xcode不一致,用sudo xcode-select -s /Applications/Xcode.app/Contents/Developer切换路径(替换成你的Xcode实际安装路径)
    • 同时确保Xcode偏好设置里的「Locations」→「Command Line Tools」已经选中对应版本
  • 重置模拟器状态再执行snapshot
    模拟器的残留状态经常是Fastlane运行失败的元凶,你可以在lane里先重置模拟器:

    lane :snapshots do
      reset_simulator
      snapshot
    end
    

    也可以给snapshot添加启动参数强制重置应用:

    snapshot(
      launch_arguments: "-UIApplicationLaunchArgumentsReset"
    )
    
  • 排查UITests中的XCTActivity使用问题
    错误提示"Activity cannot be used after its scope has completed."明确指向了你在XCTActivity的闭包范围外使用了该Activity的相关操作。比如这种错误写法:

    let activity = XCTContext.runActivity(named: "登录流程") { activity in
        // 这里是Activity的有效作用域
        activity.add(XCTAttachment(screenshot: XCUIScreen.main.screenshot()))
    }
    // 错误:在作用域外调用activity的方法
    activity.add(XCTAttachment(string: "额外日志"))
    

    请确保所有和Activity相关的操作(比如添加附件、记录日志)都放在它的闭包内部完成。

  • 关闭并行测试(如果开启)
    并行测试虽然能提速,但偶尔会导致模拟器状态异常,你可以在snapshot配置里禁用它:

    snapshot(
      disable_parallelization: true
    )
    
  • 更新Fastlane到最新版本
    旧版Fastlane可能存在和新Xcode版本不兼容的问题,运行bundle update fastlane更新到最新稳定版,很多环境适配问题都会被修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 06:22:39