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

macOS应用内启动计算器App崩溃,求正确实现方案

解决Mac App Store应用内启动计算器崩溃的问题

直接通过Process启动应用二进制文件的方式不适用于沙盒环境(上架Mac App Store的应用必须开启沙盒),这会导致目标应用因缺少正确的启动上下文而崩溃。系统要求通过LaunchServices框架启动应用,才能保证应用获得完整的运行环境。

正确实现方式

使用NSWorkspace提供的API启动应用,这是符合沙盒规范且能稳定启动系统应用的方法。以下是适配SwiftUI项目的代码:

方式1:通过应用URL Scheme启动

Button("Calculator") {
    guard let url = URL(string: "calshow://") else { return }
    NSWorkspace.shared.open(url)
}
.keyboardShortcut("=")

方式2:通过应用路径精准启动

Button("Calculator") {
    let calculatorPath = "/System/Applications/Calculator.app"
    do {
        try NSWorkspace.shared.openApplication(
            at: URL(fileURLWithPath: calculatorPath),
            configuration: NSWorkspace.OpenConfiguration(),
            completionHandler: nil
        )
    } catch {
        print("启动计算器失败: \(error.localizedDescription)")
    }
}
.keyboardShortcut("=")

原方法失效原因

  • 直接启动二进制文件:跳过了LaunchServices的初始化流程,导致计算器无法获取必要的系统服务和上下文,触发崩溃。
  • 指向.app文件夹无反应:Process的launchPath需要指向可执行文件路径,但即便路径正确,沙盒也会阻止这种启动方式,因为不符合系统应用启动规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:05:19