为了搞移动端自动化测试,或者像我跑这种批量管理账号的业务,桌面上堆满了各种漏电、鼓包的二手 iPhone?不仅要解决这些“定时炸弹”的供电问题,还得整一堆复杂的网络代理和 USB Hub,连根数据线都得理半天。前几天我实在受不了这满桌子的“电子垃圾”,准备去寻思买套云手机服务,结果一看那昂贵的月租报价单,差点把我这个老兵给劝退。
这周末刷 GitHub 的时候,发现了 Lakr233 大佬开源的 vphone-cli。
这玩意到底是个啥?
说白了,它就是一个能让你在 macOS 15+(Sequoia)系统上,通过纯命令行直接拉起 iOS 虚拟机的工具。它底层直接调用了苹果官方的 Virtualization.framework,不是那种套壳的安卓模拟器运行 iOS 主题,而是原滋原味的 Apple OS 环境。只要你的 Mac 性能过剩(M系列芯片),你就可以在自己的电脑上凭空“捏”出好几台 iPhone,不用买真机,也不用交月租。
直击痛点的几个核心爽点
- 出厂自带越狱环境,告别折腾:我以前给实体机越狱,找漏洞、防重启、防变砖简直是噩梦。这项目绝了,拉起的 Jailbreak 版本首次启动就自带 Sileo 和 TrollStore(巨魔)。对于需要搞逆向分析、抓包或者装特殊插件的后端兄弟来说,简直是开箱即用的神仙体验。
- 硬件配置全靠代码,自动化拉满:以前弄个新测试机,得手动点屏幕设置半天。现在全通过命令行参数或修改
vm/config.plist 搞定。你需要几核 CPU、多少内存、多大硬盘?一行 make vm_new CPU=8 MEMORY=8192 DISK_SIZE=128 就能瞬间分配好。想做环境隔离?随时可以用 make vm_backup 把现在的虚拟机状态打个快照,出错了直接删了重开。 - 原生终端与 SSH 直连:对于习惯了敲命令的开发者来说,最爽的莫过于直接掌控底层。它不仅给你提供了一个直达系统底层的直接控制台(Console),而且配置好之后,你完全可以像登录局域网里的 Linux 服务器一样,通过
ssh -p 2222 mobile@127.0.0.1 直接连进你的 iOS 虚拟机里执行脚本。
折腾与部署
这东西稍微有点门槛,主要是需要改一下 Mac 的安全策略(因为涉及底层的私有虚拟化权限)。如果你想体验最完整的版本,需要按照下面这几步来走:
- 首先把你的 Mac 关机,长按电源键进入恢复模式(Recovery),打开终端,关掉 SIP 并允许调试权限:
csrutil disablecsrutil allow-research-guests enable
(注:重启回 macOS 后,还需要设置 nvram sudo nvram boot-args="amfi_get_out_of_my_way=1 -v" 并再重启一次。)
brew install aria2 ideviceinstaller wget gnu-tar openssl@3 ldid-procursus sshpass keystone autoconf automake pkg-config libtool cmake
# 一定要带上子模块git clone --recurse-submodules https://github.com/Lakr233/vphone-cli.gitcd vphone-cli# 创建一个 4核 8G内存 64G硬盘的虚拟机make vm_new CPU=4 MEMORY=8192 DISK_SIZE=64# 启动!make boot
如果你是做 iOS 逆向工程、移动端自动化测试开发,或者是手里有台大内存 Mac 想要压榨其性能的极客玩家,vphone-cli 绝对值得你花一个晚上的时间去折腾。虽然我去翻了翻 Issue,发现目前对于某些重度依赖特定框架的大型 App 还有一点兼容性小坑,但在轻量级自动化、脚本运行和越狱环境测试的场景下,它已经是个极其硬核的生产力工具了。
项目地址:https://github.com/Lakr233/vphone-cli