📌 项目地址:xtool-org/xtool | ⭐ 8,993 颗星 | 🔧 Swift | 📜 未标注

项目地址:xtool-org/xtool | 8993 Star | Swift

iOS 开发的硬件门槛,终于有人动手拆了

写 iOS 应用的老规矩是:先买一台 Mac,再装 Xcode。Xcode 只在 macOS 上跑,Mac 又不便宜,这个门槛把不少人挡在门外。

xtool 做的事情很直接:让你在 Linux、Windows(通过 WSL)和 macOS 上,用 SwiftPM 构建出真正的 iOS 应用,完成签名,装到设备上运行。它不是模拟一个完整的 Xcode IDE,而是复刻了“构建、签名、部署”这条最核心的链路,用的是开放标准。

8993 个 Star 说明需求是真实存在的。

命令行长什么样

先看 xtool --help 的完整输出:

$ xtool --help
OVERVIEW: Cross-platform Xcode replacement

USAGE: xtool

CONFIGURATION SUBCOMMANDS:
  setup                   Set up xtool for iOS development
  auth                    Manage Apple Developer Services authentication
  sdk                     Manage the Darwin Swift SDK

DEVELOPMENT SUBCOMMANDS:
  new                     Create and run an xtool SwiftPM project
  dev                     Build and run an xtool SwiftPM project
  ds                      Interact with Apple Developer Services

DEVICE SUBCOMMANDS:
  devices                 List devices
  install                 Install an ipa file to your device
  uninstall               Uninstall an installed app
  launch                  Launch an installed app

命令分三组,思路很清晰:

配置类:setup 初始化 iOS 开发环境,auth 管理和 Apple 开发者服务的认证,sdk 管理 Darwin Swift SDK(这就是在非 Mac 环境上编译 iOS 产物的关键)。

开发类:new 新建一个 xtool 的 SwiftPM 项目,dev 一条命令完成构建加运行,ds 直接和 Apple Developer Services 打交道。

设备类:列出设备、装 ipa、卸载、启动,各自一个子命令。

上手流程就是 xtool setup 配好环境,xtool new 建项目,xtool dev 跑起来。安装步骤和第一个应用的教程在 xtool.sh 的官方文档里,分 Linux/Windows 和 macOS 两个版本。

不止是命令行,还有 XKit 库

xtool 把核心能力封装成了 XKit 库,可以直接加进你自己的 Swift 项目:

// package dependency:
.package(url: "https://github.com/xtool-org/xtool", .upToNextMinor(from: "1.2.0"))
// target dependency:
.product(name: "XKit", package: "xtool")

这意味着签名、证书管理、和 iOS 设备通信这些事,可以在 Linux 服务端(比如 CI 机器)用 API 直接调,不用套一层命令行。对想做 iOS 自动化构建流水线的团队来说,这条路比命令行干净得多。

用之前想清楚的几件事

  1. 它是替代,不是复刻。 Interface Builder、模拟器、断点调试器这些 IDE 功能不在 xtool 的范围内。它只管“构建到部署”这一段,UI 怎么写是你的事。

  2. Windows 走的是 WSL,不是原生支持。 想在 Windows 上用,先准备好 WSL 环境。

  3. 凭据安全要自己上心。 xtool auth 要处理你的 Apple 开发者账号认证,用之前值得搞清楚它怎么存储和使用你的凭据。

  4. 版本还在 1.2.0 附近,迭代快。 README 推荐的 .upToNextMinor 锁版本方式有它的道理,别随意跳大版本升级。

谁会真的用到它

我觉得三类人收益最大:手里没有 Mac 但想认真学 iOS 开发的人;想在 Linux CI 上构建并签名 iOS 产物的团队;以及需要用代码自动化操作 Apple 开发者服务的 Swift 后端开发者。

如果你三条都不沾,看看就好。但如果你想验证“不用 Mac 能不能做出 iOS 应用”这个问题,xtool 给出的答案目前是最完整的一个。

这篇文章对你有帮助吗?

发表回复