开发工具#部署

omarchy-apple-dev:不用 Mac 在 Linux 上做 iPhone 应用

Omarchy Linux 上的开源脚本集:不用 Mac 和 Xcode 构建 iPhone 应用,经 USB 装机调试,并打包成可上架的 .ipa。

项目资料

GitHub Ecosystem
仓库地址github.com/joshuaswarren/omarchy-apple-dev
许可证
MIT
主语言
Python
星标
1,362
核查时间
2026-10-10

以上快照资料以核查当日为准,可能随版本或运营策略变化。

很多人默认做 iPhone 应用必须有一台 Mac 和 Xcode。omarchy-apple-dev 是 joshuaswarren 开源的一组脚本,用来在 Omarchy Linux(Arch 系的 Linux 发行版)上完成这件事:构建 SwiftUI 与 Flutter 应用,通过 USB 装到 iPhone 上并断点调试,最后打包成可提交 App Store 的 .ipa。2026 年 10 月初,作者在 X 上发帖说,他在 Omarchy 上构建、提交 App Store,并在 iPhone 上停在断点,全程没有 Mac。

核心功能

  • 真机安装与断点调试:device-run.sh 通过 USB 配对 iPhone,安装并启动应用;--lldb 模式接入 LLDB 做断点调试,且不需要 root,走的是用户态隧道。
  • App Store 打包与离线校验:ship.sh 构建 release 版 .app,用 Linux 版 actool 编译 AppIcon,用 rcodesign 签名,再检查包结构、Info.plist、Mach-O 架构和描述文件。任何一项 FAIL 都会停止。
  • 上传 App Store Connect:配好 App Store Connect API 密钥后,ship.sh --upload 会注册 bundle id、创建分发证书并上传构建。仓库称,全部在 Linux 上产出的构建在 App Store Connect 中显示为 VALID。
  • Flutter 发布构建:flutter/build.sh 产出未签名的 Runner.ipa,再用开发描述文件签名。这条路线只支持 release 模式,没有 debug、热重载和模拟器。
  • 两种安装模式:full 模式使用 Xcode 下载的完整 SDK,支持 Swift、SwiftUI、Objective-C、C 和 C++,并覆盖扩展、小组件和 macOS 应用;no-xcode 实验模式不需要 Xcode 下载,但可用的系统框架只有一小部分,SwiftUI 也只支持有限子集。脚本会记住上一次的选择,并写入 ~/.config/omarchy-apple-dev/mode。
  • 大型项目验证:仓库记录了 IceCubesApp、NetNewsWire 和 Mastodon 的编译过程,NetNewsWire 连同扩展与 15 个框架通过了 App Store Connect 的处理。

典型使用场景

  • 只有 Linux 工作站的独立开发者,想用 SwiftUI 做一个小工具,并装到自己的 iPhone 上试用。
  • 已经在 Linux 上写 Flutter 的团队,需要为 iPhone 出一个 release 构建,并在本机完成签名与校验。
  • 想在 Linux 上验证 App Store 打包流程的维护者,借助 ship.sh 的离线校验提前发现包结构问题。

快速上手

准备一台 Omarchy 机器、一根 USB 线、一个免费的 Apple ID。README 给出的第一步如下:

git clone https://github.com/joshuaswarren/omarchy-apple-dev
cd omarchy-apple-dev
./install-toolchain.sh
# 脚本停在 SDK 步骤时,从 developer.apple.com 下载匹配的 Xcode.xip,然后:
XCODE_XIP=/path/to/Xcode.xip ./install-toolchain.sh
xtool new HelloOmarchy
cd HelloOmarchy
xtool dev run

README 的第一个应用流程以 xtool dev run 结束。要把已有应用装到真机,插上 iPhone 并点击“信任”后运行 ./device-run.sh。

安装完成后,先运行 swift sdk list,输出中应当出现 darwin,表示 SDK 已经注册到当前工具链。如果你之后更换过 Swift 工具链(例如改用 mise、asdf 或手动安装),需要运行 ./install-toolchain.sh --repair 重新注册 SDK。README 说明,USB 配对记录和 Apple ID 登录状态保存在用户目录中,工具链切换后仍然保留。

小结

它适合手边只有 Linux 设备、又想做 SwiftUI 小工具或 Flutter 发布构建的开发者,也适合想研究 iOS 工具链内部机制的人。代码是 Python 加 shell 脚本,采用 MIT 协议。截至 2026 年 10 月 10 日,仓库约 1,362 星,最近一次推送也在当天。

有几个限制需要先看清。第一,它仍然依赖 Apple 官方的 Xcode 下载,SDK 必须与 Swift 版本匹配,README 写的是 Xcode 27 对应 swift-bin 6.4。第二,无线部署在 iOS 26 上被 Linux 独占隧道阻挡,只能走 USB。第三,TestFlight 和 App Store 发布需要付费开发者账号。第四,仓库没有就 Apple 的授权条款给出法律意见,使用前请自行评估。第五,它是个人项目,验证记录写到 2026 年 10 月 3 日,维护持续性取决于作者和上游 xtool 的进展。关于这条路线的对比与授权争议,可以接着读 不用 Mac 做 iPhone 应用:Linux 路线能走多远。