夜雨聆风学习资料网

ARTICLE · 1192975

不用 Mac 也能编 iOS App,xtool 一天涨了 1500 星

不用 Mac 也能编 iOS App,xtool 一天涨了 1500 星

话说回来,GitHub 上最近火了一个项目叫 xtool,一天涨了 1500 多星!这个项目是个跨平台 Xcode 的替代品,不用 Mac 也可以在 Linux 或者 Windows 下编译 Swift 代码成 iOS App。

这可是个好消息啊!iOS 开发一直被 Mac 绑定着,现在这个 xtool 直接打到痛点上来了。一开始我还以为它得像平常的工具那样是在 Mac 上跑,翻了半天 README 才发现它是反着的,专门针对没 Mac 的用户开发出来的。

xtool 项目首页,主打「不用 Mac 也能编译 iOS App」

这么说来 xtool 是个什么东西呢?它是由 Swift 写的开源命令行工具,协议是 MIT,GitHub 星数达到了 swift sdk list 命令,就能看到 Darwin 这个 SDK 了。

这里要单独说一下 Darwin SDK 的应用方式。xtool 通过这种方式构建链路:SwiftPM 以装好的 Darwin SDK 为目标平台做交叉编译,最终产出的是一个结构完整的 .app 包;设备通信部分采用 usbmuxd 来实现,它是由 libimobiledevice 项目的一部分,负责让 Linux 通过 USB 通道识别并访问 iOS 设备;签名和安装方面,xtool 会把你的设备注册到开发者账号中,自动生成证书、App ID 和描述文件,最后将签名的应用推送到真机上。这三个环节都用的都是现成的开放标准或者开源组件,xtool 的作用就是把 Xcode 里被图形界面包裹起来的流程,拆解成命令行能一步步调用的东西。

SwiftPM 交叉编译 → Darwin SDK 目标平台 → usbmuxd 走 USB → 真机

然后是 xtool 使用方法。xtool.yml 文件以及一份 Build Server Protocol 配置,后者是给 IDE 用的。

VSCode 里打开 xtool 项目,多出 xtool.yml 和 Build Server Protocol 配置

接下来使用 坑1: 坑2: WSL2 x86_64 上有人报 actool wrapper 生成失败,issue #310,标题看着挺吓人的,实际上就是资源编译那个环节挂了,还在修。

首次 Trust 配对完之后,可能直接报个错。官方说法是再跑一次 <code sfmono-regular,="" consolas,="" liberation="" mono,="" menlo,="" monospace;="" background:="" #f2f2f2;="" color:="" #c7254e;="" padding:="" 2px="" 5px;="" border-radius:="" 3px;="" font-size:="" 15px;\"="">xtool dev 就行,为啥报错没说,我也没深究。

官方教程里的示例 App,跑起来是这个效果(我还没真机复现)

总之,xtool 是一个很有潜力的工具。它把 Xcode 的功能移植到了命令行和开放标准之上。我还没真机测试过,等哪天打开虚拟化试试,再来写一篇更详细的评测吧!

相关学习资料