夜雨聆风学习资料网

ARTICLE · 1213846

写 iOS App 必须先买 Mac?1.1 万 star 的项目说:不一定

写 iOS App 必须先买 Mac?1.1 万 star 的项目说:不一定

📦 本期看点 · 3 PICKS

👉 滑动

PART 01

不用 Mac 写 App

跨平台替代品

PART 04

一条命令上真机

上手实测

PART 05

冷水时间

坑与限制

PART ///

写在最后

观点时间

给 iPhone 写 App 的第一步,不是学 Swift,是先买台 Mac。Xcode 只在 macOS 上跑,这条规矩苹果维持了快二十年,无数人就这么被拦在门外,久了也就认了。

GitHub 上有个项目偏不认。它叫xtool,可以在Linux 和 Windows 上把代码编译成 iOS 应用、完成签名、直接装进真 iPhone。项目用 Swift 写的,MIT 协议,目前一万一千多个 star,今天还挂在 GitHub Trending 前排,一天涨了一千五百多个 star。

这篇讲清楚三件事:它凭什么能做到、怎么上手跑通第一个 App、以及动手之前你该知道哪些坑。

01

PART

不用 Mac,iPhone 应用照写不误

WHAT · 跨平台 XCODE 替代品

xtool 给自己的定位很直白:跨平台的 Xcode 替代品。Xcode 日常干的活,它挑最核心的三件出来做:

把 SwiftPM 包编译成 iOS 应用

给应用签名,装到真机上

用程序的方式跟苹果开发者服务打交道

三条全做到了,全程不碰 macOS。更有意思的是,Mac 用户也能用它:如果你嫌 Xcode 又胖又慢,写 SwiftUI 应用时完全可以让 xtool 接手大部分日常操作。有 iOS 工程师实测后评价,构建部署几乎瞬时完成,这可能是快速原型和 AI 辅助开发循环的正确方向。

02

PART

灵感来自越狱社区,伏笔埋了八年

STORY · 从 THEOS 到 XTOOL

作者叫 Kabir Oberai,这个故事得从 2017 年说起。

他当年混越狱社区。那个圈子有个叫Theos的构建系统,专门编越狱插件,基于 GNU make,体验谈不上好,但它有个惊人的能力:在 Windows 和 Linux 上都能编出跑在 iOS 上的代码。只是越狱插件不需要签名,这套流程一直没被正经开开发者用上。

他后来成了 Theos 的核心维护者,顺手给它加了 Swift 支持。但有个问题一直盘在他脑子里:为什么只有越狱社区的人,配在任何平台上写 iOS 应用?

2025 年 5 月,他把答案发在了 Swift 官方论坛上,就是 xtool。他自己的说法是,这是八年工作的集大成,翻开提交记录,还能挖到一些当年的老底子。

03

PART

拆开 Xcode,取我所需

HOW · 原理拆解

xtool 的思路其实不算激进:不逆向 Xcode,而是把官方安装包里的东西拆出来用。

你先从苹果开发者官网下载一个 Xcode.xip(要登录 Apple ID),交给 xtool。它解包后提取出编译器、链接器、头文件和库,在你当前的系统上生成一个本地 iOS Swift SDK。跑一下 swift sdk list,能看到一个 darwin,就成了。

官方 Xcode.xip

登录 Apple ID 下载

→

解包生成 SDK

提取工具链和库

→

SwiftPM 编译打包

产物直接是 ipa

签名与装机由 XKit 加 usbmuxd 完成

真正微妙的是签名环节。xtool 内置了一个叫XKit的库,直接跟苹果开发者服务对话。登录支持两种方式:付费开发者账号走 API Key,用的是苹果公开的 App Store Connect API;普通免费 Apple ID 走账号密码,但这条路用的是苹果私有接口,官方文档都建议你专门注册个小号来登录,谨慎点总没错。

装到手机这步靠 usbmuxd,libimobiledevice 项目里的老组件。xtool 会自动注册设备、生成证书、建 App ID、拉描述文件,然后签名、安装,一条龙。

04

PART

一条命令跑到真机

HANDS-ON · 上手实测

前置条件三样:Swift 6.4 工具链、usbmuxd、Xcode.xip。Linux 上一条命令装依赖:

CMDsudo apt-get install usbmuxd

然后去 GitHub Releases 下载对应架构的 AppImage,改名丢进 PATH:

...bash

curl -fL "https://github.com/xtool-org/xtool/releases/latest/download/xtool-$(uname -m).AppImage" -o xtool

chmod +x xtool

sudo mv xtool /usr/local/bin/

跑 xtool setup,选登录方式、填 Xcode.xip 的路径,等它解包生成 SDK。接着 xtool new Hello 建一个 SwiftPM 项目,多出来的 xtool.yml 里写好 Bundle ID 就行。

然后是整个项目最舒服的一条命令:

CMDxtool dev

它会构建、等你插上手机、自动完成注册签名安装全流程。终端里的进度条一节节亮起来:Provisioning、Signing、Packaging、Installing、Verifying。手机上第一次要动手的点有两处:开发者模式要打开,设置里的设备管理页要信任你的证书。

开发体验也有讲究。项目自带 Build Server Protocol 配置,VSCode 装个 Swift 扩展就有代码提示和文档悬浮。第一次编译慢,要为 iOS SDK 编 Swift 模块,之后全局有缓存,改一行代码到重新装进手机,构建只要 0.6 秒左右。

— 在 VSCode 里跑 xtool dev:0.6 秒构建完成,直接装进真机(图自项目文档)

05

PART

冷水:这些坑得提前知道

LIMITS · 不是完全体

先把丑话说在前头:xtool 还不是 Xcode 的完全体,有几个坑你得提前知道。

第一,没有界面拖拽。Interface Builder 和 Storyboard 完全不支持,作者的表态也很干脆:SwiftUI 基本取代它们了,复刻一套不值得。写 SwiftUI 没问题,想拖控件没有。

第二,资源系统是阉割的。Asset Catalog 不支持,图片只能按原始文件放;SwiftData 的 @Model 这类苹果私有宏用不了,@Observable 这类通用宏倒是正常。

第三,能编的目标只有应用本身。App Extensions——小组件、分享面板那些——还不行;上架 App Store 也不支持,这两项都在计划里。真机调试方面,iOS 17 以下可以连 LLDB,17 及以上苹果改了底层协议,得外挂 pymobiledevice3 之类的工具。

还有个绕不开的问题:苹果开发者协议写明,苹果软件得装在苹果品牌的机器上。xtool 把 Xcode 的 SDK 拆到 Linux 上跑,在协议层面属于灰色地带,Swift 论坛发帖当天就有人把这条款翻了出来。个人折腾没听说出事,商用团队用之前想清楚。

另外,Windows 用户要多受一层累:得走 WSL,再用 USBIPD 把手机的 USB 透传进去,中途报 muxError 还得靠 iTunes 中继的老偏方。这一步比 Linux 麻烦不少。

///

LAST

写在最后

THOUGHTS · 一点看法

Xcode 锁在 Mac 上,是苹果维持了二十年的惯例。xtool 撬动它的方式不是喊话,而是把每一层拆开证明给你看:SDK 可以迁移,签名可以复刻,开发者服务可以用开源代码对话。

对个人开发者,它意味着给 iPhone 写个小工具,不再需要先花一万多买台 Mac;对团队,它意味着 Linux 的 CI 机器能直接出真机安装包,不用再养一排 Mac 主机。当然也别神化,上架、调试这些硬骨头还没啃完,一个人扛一个 Xcode,路还长。但方向是对的,star 数说明很多人在盯着。

我是明翼,热衷于分享开源世界里的好东西。我们下篇见。

既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。

点赞
在看
转发

THANKS FOR READING

相关学习资料