gpt4 book ai didi

ios - xcodebuild、xcrun 和 swift 命令行工具之间有什么区别?

转载 作者:行者123 更新时间:2023-12-04 13:06:53 25 4
gpt4 key购买 nike

我们可以通过多个命令从命令行构建和运行 Swift 代码/项目,而无需使用 Xcode。我听说过 xcodebuild , xcrunswift用于Xcode开发。我确实使用 fastlane但我并不真正了解在引擎盖下为其提供动力的工具。
我是一名使用 Mac 的 iOS 开发人员。我使用 Xcode 进行开发,所以我之前没有使用过这些命令行工具。
每个命令之间有什么区别?是否有任何情况下我最好使用一种而不是另一种?

最佳答案

Tl; DRxcodebuildxcrun帮助在 headless 上下文中构建 Xcode 项目,例如在 CI 设置中。 swift是 Swift REPL,主要用于 Swift on Server 应用程序。因此,我们可以在不了解或经常使用移动应用程序开发中的工具的情况下构建应用程序。我们使用 xcodebuildxcrun在幕后与 Xcode 交互,即使我们没有意识到,因为它们捆绑在 Xcode's Command Line tools 中(文档存档,但仍然相关)。fastlane是一个示例 CI 工具,它使用这些工具自动执行构建过程、证书签名和与 App Store Connect 的交互。
编译xcodebuild是 Xcode 捆绑的命令行工具包的一部分。来自 manpages :

build Xcode projects and workspaces

xcodebuild builds one or more targets contained in an Xcode project,or builds a scheme contained in an Xcode workspace or Xcode project.

xcodebuild有很多选择和用例。这些选项相当于 Xcode IDE 中的某些用户操作。用法示例:
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme

Builds the scheme MyScheme in the Xcode workspace MyWorkspace.xcworkspace.


在上面的命令中,我们在没有 Xcode 的情况下构建工作区,使用 Xcode 在内部运行的内容进行编译。 Xcode 只能安装在 macOS 上,我们使用它的命令行工具也有同样的限制,包括 xcodebuildxcrun .
xcrun xcrun是 Xcode 的 CLI 工具的另一个 Xcode 命令行工具部分。来自 manpages :

run or locate development tools

xcrun provides a means to locate or invoke coexistence- andplatform-aware developer tools from the command-line, withoutrequiring users to modify makefiles or otherwise take inconvenientmeasures to support multiple Xcode toolchains.

xcrun [-sdk SDK] -find <tool_name>
xcrun也常用于 Xcode-select在同一台机器上管理多个 Xcode 版本。每个版本的 Xcode 都捆绑了自己的开发工具,我们可以使用 xcrun获取它们的当前路径:
xcrun xcode-select --print-path
swift swift是 Swift REPL。 swift是一个包含 Swift 工具链的命令行工具,但也可以安装在 Xcode 捆绑工具之外。 swift不同于 xcodebuildxcrun因为它是用 Swift 而不是 C 编译的。 swift在 MacOS 中没有很好的记录 manpages但是,Apple 在其 blog 中记录了这些工具。 :

Xcode 6.1 introduces yet another way to experiment with Swift in theform of an interactive Read Eval Print Loop, or REPL.


REPL本质上是一个交互式编译环境或shell。首先,REPL 读取代码,然后对其进行评估、打印并重复该过程。可以想象,与 IDE 相比,我们可以使用 REPL 进行开发的要少得多。但是,除了 iOS、watchOS 和 macOS 开发之外,Swift 还有其他用例。 swift包括 standard library并且不包括诸如 Foundation 之类的库和 UIKit . iOS 或 macOS 开发几乎肯定需要这些 Swift 库,因此我们无法使用 swift 开发应用程序。单独的 REPL。然而,Swift on Server 项目经常使用 swift在 Linux 甚至运行 Swift 代码 Windows机器。
为了更广泛地采用,Apple 制作了 swift在 Xcode 不可用的不同操作系统上可用。 Swift 现在也有 Docker support和 window 。 Docker 使我们能够运行 swift在任何机器上,无论底层操作系统如何。 swift在这些应用程序中充当脚本语言。
SoS 奖金说明 swift主要用于 Swift on Server . Swift on Server 对于服务器应用程序具有出色的性能,具有更低的内存占用、快速的启动时间和确定性的性能。尽管在某些任务上它不如 .NET core 快,但这是因为 Swift 更安全,它具有严格的类型系统、ARC 的垃圾收集以及针对特定于服务器的应用程序的较少优化。许多早期采用者称赞改进的语言类型系统、内存效率和算法性能。事实上, swift Vapor 是 comparable to Python和 Ruby 在 JSON 序列化任务中的效率。 Swift 在很少的任务上可与 Java 相媲美,但随着语言和生态系统的发展,这种情况可能会发生变化。

关于ios - xcodebuild、xcrun 和 swift 命令行工具之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69030618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com