如何在 Xcode 之外运行 Xcode 应用程序? MacOS 独立应用程序与 Xcode 模拟器中的应用程序运行方式不同

Posted

技术标签:

【中文标题】如何在 Xcode 之外运行 Xcode 应用程序? MacOS 独立应用程序与 Xcode 模拟器中的应用程序运行方式不同【英文标题】:How to run Xcode app outside of Xcode? MacOS Stand alone app doesn't run the same as app in Xcode Simulator 【发布时间】:2019-06-30 22:43:54 【问题描述】:

我正在 Mojave 10.14.5 下的 Xcode 10.1.1 中开发 macOS 应用程序。

当我在 Xcode 调试器中运行我的应用程序时,它可以工作。但是,当我从 Xcode 中拖动应用程序并尝试单独运行它时,它无法正确启动。

问题:Xcode 中的哪些设置会导致独立应用程序与 Xcode 中运行的版本不同地编译或运行?

更多细节:

我的 Swift 编码技能在这一点上非常好,但我仍然是 Xcode 方案、构建设置等方面的初学者。所以自从我上次尝试独立运行(去年 11 月)以来,我可能随机更改了一个重要设置。

我尝试将应用程序从 Xcode 的文件导航“产品”选项卡拖到应用程序文件夹。我还尝试运行 Products > Archive 将文件复制到文件夹,然后将该版本拖到 Applications 文件夹。

两者产生相同的结果:当应用程序运行时,它只显示一个空白窗口。它不会启动我的初始视图控制器。 “关于”菜单等,工作,所以我不认为应用程序挂起......

更多详情: 1) 11 月,我使用 High Sierra 成功地将应用程序从 Xcode 中复制出来以独立运行。这是我第一次尝试在 Mojave 中提取此应用程序。

2) 上周我能够在 Mojave 中将不同(新)应用程序从 Xcode 中拖出而没有问题。

3) 我知道的唯一非默认编译设置将 Swift 语言强制为 4.2 版,因为这个应用程序使用 SwiftSoup Cocoa Pods。

4) 正如我所提到的,该应用在 Xcode 中运行良好。

如果您对如何检查我的环境或如何解决或调试此问题有任何建议,请告诉我。

更新: 当我尝试产品 > 存档时,我注意到我的存档方案设置为发布。我尝试了存档的“发布”和“调试”方案。结果一样。

这个应用程序仅供我个人使用,所以我很乐意在 Xcode 之外运行“调试”可执行文件,如果这比“发布”版本更容易的话。

这就是我所说的“从 Xcode 的“产品”部分拖动应用程序”的意思

【问题讨论】:

我编辑了我的方案以强制“存档”创建应用程序的“调试”版本,而不是“发布”版本。结果相同,所以我认为这与 Scheme 无关。 “当我从 Xcode 中拖动应用程序时”是什么意思? Archive 下的方案应该有一个release 配置。您应该存档您的项目并将其导出。不要试图将您的应用程序拖到任何地方,它不会工作。尝试阅读有关应用分发的信息。 @#l Tomato - 我更新了标题并添加了一张图片来说明这一点。在其他项目中,我可以将应用程序直接拖出 Xcode 的 File Navigator 面板的 Product 部分,以获得“调试”可执行文件。这不适用于某个特定项目。 @Tai Cohen - 我同意存档应该导出“发布”版本。我将我的方案更改为“调试”以确定某些编译设置差异(调试编译与发布编译)是否是问题的一部分。我很高兴运行 Debug 可执行文件,因为这个应用程序仅供我个人使用。 【参考方案1】:

我就这个话题问了一个更详细的问题,得到了更好的答案。

这个问题是由于直接添加到 Interface Builder (IB) 中的视图控制器的 WkWebView。其他人正在报告类似的问题。直接在 IB 中添加 WkWebview 在 Xcode 9.4.1 中对我有用,但在 Xcode 10.2.1 中无效

我的新问题在这里:Archived macOS app launches with blank window

新问题被标记为重复。 Apple Developer Forun 的详细讨论,包括简单代码在这里:https://forums.developer.apple.com/thread/116047

【讨论】:

不知道为什么这个答案被否决,绝对帮助了我 - 我在 UI 中有一个 WKWebview,但忽略了在构建阶段将 webkit 添加到链接库。应用程序在没有链接 webkit 的情况下在调试中运行良好,但不是作为独立的。对于 ios 应用,我也有同样的想法。

以上是关于如何在 Xcode 之外运行 Xcode 应用程序? MacOS 独立应用程序与 Xcode 模拟器中的应用程序运行方式不同的主要内容,如果未能解决你的问题,请参考以下文章

iOS Simulator 自定义 City Run 在 Xcode 之外

在 XCode 之外测试 iCloud:签名无效

如何在代码之外使用 Xcode 4 和 iOS 4.3 将属性分配给自定义 UIControl?

如何解决图像未显示在模拟器或 iPhone for Xcode 中的问题

如何在 xcode 中快速取消选择除您想要的构建目标之外的所有构建目标

在不同版本的 OSX 上调试 XCode 之外的应用程序(查看异常、日志等)