VS Code 能不能跑 iPhone 真机?这个问题我被问过不止一次。能,但前提得先说清楚:KXApp 不是自带一套编译链,它调用的是你 Mac 上已经装好的 Xcode。所以 Mac、Xcode、数据线、信任,这几样一个都不能少。
这篇就把 VS Code 真机调试这条路演示一下。装插件开始,一路走到断点真正停住,中间每一步都做了什么、容易卡在哪,都写出来。
环境要求其实不多,但少一样都跑不起来:
还有一步经常被忽略:让 Xcode 先准备一次这台设备。连上手机,打开 Xcode 的「Window › Devices and Simulators」,等它把符号和调试支持准备完。这一步不做,第一次调试会慢得让你怀疑人生(我原以为是线的问题,后来发现就是没准备)。
在 VS Code 的扩展视图里搜
kxapp,点安装。用 Cursor 或 VSCodium 的,从 Open VSX 搜同一个名字;公司内网装不了市场的,可以下 VSIX 离线装。
装完不用新建项目。用「文件 › 打开文件夹…」打开含有
.xcodeproj 或
.xcworkspace 的那个目录,工程在子目录里也没关系嘛。识别到之后,活动栏会出现「Xcode 工程」视图,状态栏会显示 Scheme、配置和运行目标。
同名的工作区和工程同时存在时(CocoaPods 项目经常这样),插件会自动用工作区。文件夹里有多个不同工程,就在视图的「工程」那一行切换。别把
Pods、node_modules、build这些目录当成项目根打开,识别不到。
这三样在状态栏点一下就换了,不用进侧边栏,挺省事的吧。
Scheme 是你要运行的 App;构建配置一般留 Debug;运行目标可以是模拟器,也可以是插着数据线的 iPhone。模拟器右键能启动和关闭,选中的模拟器没开,运行时也会自动拉起来。
真机插拔之后,设备列表几秒内会刷新;没刷出来就点一下「刷新设备」。设备后面会标状态,比如 Wi-Fi 连接、开发者模式没打开。看到这类提示,先回手机设置里处理,别在插件这边反复点。
在源码行号左边点一下,断点就设好了。然后按
Cmd+R,或者 F5。
接下来的动作是串起来的:构建、安装、启动 App、接上调试器。断点命中以后,变量、监视、调用栈、线程都在 VS Code 左侧的调试视图里,调试控制台可以输入 lldb 命令,比如
po self、
bt。条件断点和日志断点也能用,后者不停下来,只打一行输出。
App 自己打印的内容在「输出 › kxapp Console」,构建日志在「输出 › kxapp Build」。编译错误会进「问题」面板,点一条就跳到对应的行。要停止,按
Cmd+.。想让 App 留在设备上继续跑,把
kxapp.debug.killAppOnStop 关掉就行。
有两个坑值得提前说。调试工具栏上的「重启」只是重启调试会话,不会重新编译;改了代码之后,老老实实再按一次
Cmd+R。另外,Cmd+B和Cmd+R只在编辑器有焦点、并且打开了 Xcode 工程时生效,这时候Cmd+B也不再切换侧边栏——第一次遇到可能会以为快捷键失灵了。
每次都点 Scheme 和设备有点烦吧。要固定 Scheme、设备,或者给 App 传启动参数,在
.vscode/launch.json 里加一段配置就行:
1{2 "version": "0.2.0",3 "configurations": [4 { "type": "kxapp", "request": "launch", "name": "kxapp: Build & Run", "build": true },5 { "type": "kxapp", "request": "launch", "name": "kxapp: Run", "build": false },6 { "type": "kxapp", "request": "attach", "name": "kxapp: Attach" }7 ]8}
常用的字段就几个:
scheme、
configuration、
device、
build、
args、
env。不写的话,就用当前状态栏里选中的那一套。
还有一个挺实用的能力:附加到正在运行的 App。命令面板里运行「附加到运行中的 App…」,从列表里按名称、pid 或 bundle id 挑一个,断开之后 App 继续跑,不会被顺手杀掉。
插件的日志分三个通道,都在「输出」面板右上角的下拉框里:
kxapp(插件本身)、
kxapp Build(构建)、
kxapp Console(App 输出)。碰到问题先看这三个,基本能定位到是哪一段出的岔子啊。
.xcodeproj 或
.xcworkspace;然后运行
xcode-select -p,输出应该在
Xcode.app 里面。如果指向的是 CommandLineTools,用
sudo xcode-select -s /Applications/Xcode.app 切回来。新装的 Xcode 记得先打开一次。kxapp Build 里的第一条错误。签名相关(
No profiles for…、
Signing requires a development team)去 Xcode 的账户和 target 签名设置里查。CocoaPods 工程确认用的是
.xcworkspace,并且执行过
pod install。必须装 Xcode 吗? 必须啊。插件用本机的 Xcode 来构建、签名和调试,装好之后日常可以只开 VS Code。这是它和"自带工具链的独立 IDE"最大的区别,别搞混了。
会不会改我的项目? 只有你在编辑器里改了设置,才会写回对应文件。为了代码补全,插件会在项目根目录放一个
buildServer.json,加进
.gitignore 就行。
能和 Xcode 同时开吗? 能。两边共用编译结果,在 VS Code 里构建过的,切到 Xcode 不用重新编译,反过来也一样。
Windows 上能用吗? 不能。只支持 macOS。
真机签名要额外准备吗? 不用另外准备,沿用工程里的签名设置。在 Xcode 登录 Apple ID、选好 Team,描述文件会自动创建和更新,真机构建时那个自动更新的开关默认是开着的。
Xcode 仍然是完整的那一套:Interface Builder、Instruments、深层工程配置,这些场景离不开它。KXApp 覆盖的是日常高频的那一段——写代码、构建、跑真机、看断点。
如果你习惯 VS Code 的快捷键、主题和一堆插件(尤其是 AI 助手),把这段搬到 VS Code 里,至少不用在两个窗口之间来回切。做自动化构建的话,
xcodebuild 加 CI 还是另一条路,各管各的。
按这个顺序走一遍:装好 Xcode 并打开一次 → 装 KXApp → 打开工程文件夹 → 选 Scheme 和运行目标 → 下断点按
Cmd+R。卡住的时候别乱猜,先看
kxapp、
kxapp Build、
kxapp Console 三个输出通道,大半问题都能在那找到线索。
把 VS Code 真机调试跑顺之后,日常开发确实能少开不少次 Xcode。第一次可能会多花点时间,把设备准备那一步做完,后面就顺了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70046795/viewspace-3186284/ ,如需转载,请注明出处,否则将追究法律责任。