📌 项目地址: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 自动化构建流水线的团队来说,这条路比命令行干净得多。
用之前想清楚的几件事
-
它是替代,不是复刻。 Interface Builder、模拟器、断点调试器这些 IDE 功能不在 xtool 的范围内。它只管“构建到部署”这一段,UI 怎么写是你的事。
-
Windows 走的是 WSL,不是原生支持。 想在 Windows 上用,先准备好 WSL 环境。
-
凭据安全要自己上心。
xtool auth要处理你的 Apple 开发者账号认证,用之前值得搞清楚它怎么存储和使用你的凭据。 -
版本还在 1.2.0 附近,迭代快。 README 推荐的
.upToNextMinor锁版本方式有它的道理,别随意跳大版本升级。
谁会真的用到它
我觉得三类人收益最大:手里没有 Mac 但想认真学 iOS 开发的人;想在 Linux CI 上构建并签名 iOS 产物的团队;以及需要用代码自动化操作 Apple 开发者服务的 Swift 后端开发者。
如果你三条都不沾,看看就好。但如果你想验证“不用 Mac 能不能做出 iOS 应用”这个问题,xtool 给出的答案目前是最完整的一个。