最后更新于 2026 年 8 月 26 日,版本与工具要求核实自 React Native 官方发布说明、环境配置文档及 Apple 官方 Xcode 文档。
Windows 能写 React Native 0.87 的 JavaScript 或 TypeScript,但不能在本机完成 iOS 模拟器、原生依赖排查和 Xcode 构建;最快的办法是采用“Windows 编码,Mac 验证”的双轨流程。只要你的项目需要第一次运行 iOS,就把代码提交到仓库,再切换到真实 macOS 环境。
这篇文章适合 3 类人:只有 Windows 电脑、刚开始学 React Native 的学生;课程要求同时提交 Android 与 iOS 作业的新手;已经完成界面开发,却卡在 iOS Simulator、原生依赖或签名步骤的学习者。
先划清 React Native 0.87 的系统边界
React Native 0.87 已于 2026 年 8 月 11 日发布,目前官方版本页面将 0.87 列为最新稳定版本。这个版本默认启用 Strict TypeScript API,并要求 Node.js 至少为 22.13.0;Swift Package Manager 的 iOS 支持仍属于实验性路径,初学者不应为了尝鲜就改变课程原本指定的依赖方案。查看 React Native 0.87 发布说明
真正影响你能否跑 iOS 的,不是编辑器装在 Windows 还是 Mac,而是 iOS 原生工具链在哪里运行。React Native 官方环境文档明确指出,构建 iOS 应用需要 Xcode;Xcode 同时提供 iOS Simulator 以及对应的构建工具。查看 React Native 环境配置要求
| 学习任务 | Windows 能否完成 | 是否需要 Mac | 你应保存的结果 |
|---|---|---|---|
| 编写 JavaScript / TypeScript | ✅ 可以 | ❌ 不需要 | 源代码与提交记录 |
| 编写通用界面和业务逻辑 | ✅ 可以 | ❌ 不需要 | 页面、状态、接口代码 |
| Android 模拟器调试 | ✅ 可以 | ❌ 不需要 | Android 运行结果 |
| 使用 Expo Go 做基础预览 | ✅ 通常可以 | ❌ 不一定 | 预览截图与问题记录 |
| 打开 iOS Simulator | ❌ 不可以 | ✅ 需要 | 模拟器运行结果 |
| 执行 iOS 原生构建 | ❌ 不可以 | ✅ 需要 | 构建日志与错误信息 |
| 真机调试或分发签名 | ❌ 不能本地完成 | ✅ 需要 | 签名、证书或构建产物 |
因此,“Windows 能不能开发 iOS”要分成两句话理解:你可以在 Windows 编写绝大多数跨平台代码,但不能把 Windows 当成完整的 iOS 原生构建机。
Windows 阶段先完成可复用的项目基础
第一阶段不要急着找 macOS 虚拟机,也不要为了安装 Xcode 立刻购买 Mac。你可以在 Windows 11 上完成项目初始化、页面布局、组件拆分、接口调用、状态管理和基本的 JavaScript 调试;如果课程使用 Android,也可以先用 Android 模拟器检查交互。
这里要注意一个容易误判的地方:能在浏览器、Expo Go 或 Android 设备看到页面,只能证明一部分 JavaScript 逻辑可运行,不代表 iOS 原生工程已经通过验证。涉及权限、推送、相机、地图、文件系统或第三方原生库时,iOS 仍可能在构建阶段暴露问题。
建议你在 Windows 上先做这几件事:
- 确认
package.json中的 React Native 版本确实是 0.87 系列,不要只看课程标题。 - 记录
node -v、包管理器版本以及课程指定的依赖安装方式。 - 每完成一个可运行功能,就提交一次 Git 记录,不要把所有代码堆到最后才保存。
- 把
package-lock.json、yarn.lock或课程要求的锁定文件一起提交。 - 单独记录新增的原生库、权限配置和 iOS 项目文件改动。
React Native 0.87 默认启用 Strict TypeScript API,深层导入内部路径可能触发类型错误。若你复制了旧教程中的 react-native/Libraries/... 写法,先按官方 Strict API 说明检查,而不是把报错简单归结为 Windows 环境问题。查看 Strict TypeScript API 变化
| 方案 | 适合的阶段 | iOS 模拟器 | 原生问题定位 | 本文评分 |
|---|---|---|---|---|
| 只用 Windows | 页面与通用逻辑学习 | ❌ | ❌ | 3 / 5 |
| Windows + Android 调试 | 跨平台基础练习 | ❌ | ❌ | 4 / 5 |
| Windows + Expo Go 预览 | 快速学习组件与交互 | 有条件,不能等同本地 Xcode | 有限 | 3.5 / 5 |
| Windows + 远程 Mac | 课程作业与首次 iOS 验证 | ✅ | ✅ | 4.5 / 5 |
| 长期自购 Mac | 高频 iOS 开发与真机调试 | ✅ | ✅ | 5 / 5 |
这张评分表是面向学生决策的编辑判断,不是硬件性能测试。你的目标如果只是完成一门课的 iOS 验证,通常没必要为了偶尔使用 Xcode 立即承担整台设备的购买和维护成本。
第一次切换到 Mac 前做好版本和权限准备
切换前最重要的不是先打开 Xcode,而是让项目在“可复现”的状态。你应当准备好代码仓库访问权限,并确认远程 Mac 或本地 Mac 可以安装课程要求的 Node.js、Xcode 和 iOS 平台组件。
React Native 0.87 发布说明将 Node.js 最低要求写为 22.13.0;而官方通用环境页目前显示 Node.js 22.11.0 或更新版本。这类页面出现差异时,针对 0.87 项目应优先按版本发布说明执行,并以课程锁定版本和项目实际安装结果为准,不要混用不同版本的全局环境。
Xcode 也不要盲目追逐测试版。Apple 的系统要求页面列出 Xcode 26.6 支持 macOS Tahoe 26.2 至 26.x,并对应 iOS 26.5 SDK;同一页面还列有 Xcode 27 beta,但测试版不应作为新手课程的默认稳定环境。查看 Apple Xcode 系统要求
切换前逐项确认:
- 代码已经推送到仓库,且工作区没有未提交的重要改动。
- 课程要求的 React Native、Node.js、包管理器和原生库版本已经记下来。
- Mac 上有可用的 Apple 账户权限;只做 Simulator 练习时,不要提前把发布流程复杂化。
- Xcode、Xcode Command Line Tools 和匹配的 iOS Simulator 运行时可用。
- 项目是否使用 CocoaPods,是否存在
ios/Podfile、自定义脚本或环境变量。 - 如果通过远程桌面连接,提前确认你知道如何复制代码、粘贴命令和保存构建日志。
⚠️ 不建议第一次构建时同时升级 React Native、Xcode、Node.js 和原生依赖。一次只改变一个变量,才能判断错误究竟来自项目、版本还是环境。
在远程 Mac 上完成第一次 iOS 启动
远程 Mac 不是“把 Windows 变成 Mac”,而是让你的代码在真实 macOS 工具链中运行。你通过 VNC 或其他远程方式看到桌面,在终端输入命令,Xcode 和 Simulator 则在远程主机上实际工作;需要远程桌面操作时,可以先阅读 VNC 连接新手指南。
第一次启动建议按下面的顺序进行。
1.获取代码并确认版本
git clone 你的仓库地址
cd 你的项目目录
node -v
npx react-native --version
如果 node -v 不符合项目要求,先切换 Node.js,再安装依赖。不要在版本不确定的情况下直接执行构建,否则后面的错误日志很难判断。
2.安装 JavaScript 依赖
如果项目提交了 package-lock.json,优先使用:
npm ci
如果课程指定 Yarn 或 pnpm,就按课程锁定的包管理器执行。不要因为网上另一篇教程使用了不同命令,就删除锁定文件重新安装。
3.处理 iOS 原生依赖
如果项目使用 CocoaPods,并且仓库没有提交 Pods 目录,在 ios 目录执行课程要求的安装命令,例如:
cd ios
pod install
cd ..
CocoaPods 可以理解为 iOS 原生依赖的“配货清单”:React Native JavaScript 代码只是订单,Pod 安装过程负责把摄像头、网络、地图等原生组件准备到 Xcode 工程中。
React Native 0.87 新增 Swift Package Manager 的实验性 iOS 支持,但官方仍将 CocoaPods 作为默认且受支持的路径。对刚开始学习的项目,除非课程明确要求,否则不要在首次构建前主动切换依赖系统。查看 0.87 的 Swift Package Manager 说明
4.启动 Metro
npx react-native start
Metro 是 React Native 的 JavaScript 打包和开发服务器,可以把你写的组件和业务代码送给正在运行的应用。你可以把它理解成“代码传送站”:它不是 iOS 模拟器,也不是 Xcode;Metro 正常启动,只代表 JavaScript 侧已经准备好。
5.打开 iOS Simulator 并运行项目
另开一个终端窗口,在项目根目录执行:
npx react-native run-ios
如果项目脚本已经配置好,也可以使用:
npm run ios
React Native 官方模拟器文档说明,可以通过 --simulator 指定设备名称;设备列表则可用 xcrun simctl list devices 查看。查看官方 Simulator 运行命令
首次运行时,Xcode 可能需要解析工程、编译原生代码并安装应用,等待时间会因项目依赖和远程连接环境而不同。不要在构建还没有结束时连续重复执行多个命令,这会让日志混在一起,反而更难排错。
验证结果时不要把三个目标混为一谈
第一次看到应用出现在 iOS Simulator 中,只能说明“模拟器调试构建成功”。它不等于真机调试成功,也不等于已经生成可以分发给用户的安装包。
你可以按下面的顺序验收:
- 关闭应用后,能否再次执行 iOS 运行命令并启动。
- 修改一个文本或颜色后,Metro 是否能刷新页面。
- 重新安装依赖后,原生工程是否仍能完成构建。
- 终端和 Xcode 的错误日志是否已复制保存。
- 新增权限或原生库后,是否重新做过一次 iOS 验证。
Xcode 的 Product > Run 会编译并启动当前 Scheme;Product > Build 则只构建、不启动。Apple 也提醒,Simulator 适合快速开发,但不能代表真实设备的实际性能,因此课程进入真机测试阶段后,仍要单独验证。查看 Apple 的构建与运行说明
代码签名要放在正确的时间处理。只做模拟器练习时,你通常先关注工程能否构建和页面是否正常;当你要连接 iPhone、制作测试版本或提交 App Store Connect 时,才需要进一步配置证书、Bundle ID 和 provisioning profile。Apple 的文档说明,自动签名会根据证书、设备和 App ID 等信息管理开发配置;配置失效时,可能需要重新生成 profile。查看 Apple provisioning profile 说明
第一周用双轨流程保存代码
你不需要每天都连接远程 Mac。更适合学生的安排是:平时在 Windows 写代码和运行 Android,完成一个小功能后提交;需要确认 iOS 行为时,再打开远程 Mac 拉取最新提交,执行依赖安装、Metro 和 Simulator 验证。
下面这份清单可以直接照着执行:
- [ ] Windows 上确认页面、状态和业务逻辑可以运行。
- [ ] 提交
package.json与锁定文件。 - [ ] 在提交信息中注明新增的原生库或权限。
- [ ] 远程 Mac 拉取最新代码,不直接复制一份旧项目继续改。
- [ ] 核对 Node.js、React Native 和 Xcode 版本。
- [ ] 启动 Metro,再运行 iOS Simulator。
- [ ] 保存首次构建的成功日志或错误日志。
- [ ] 新增原生库后重新执行一次 iOS 验证。
- [ ] 修改权限、Bundle ID 或 iOS 工程文件后重新构建。
- [ ] 作业提交前确认 Android 与 iOS 使用的是同一份最新代码。
如果你还没有确定远程环境的连接方式,可以先查看 SSHMac 的帮助中心;如果只需要短期完成课程任务,也可以按照作业期限选择合适的远程 Mac 使用周期,而不是把临时学习需求当成长期购机需求。
新手常见问题
Windows 电脑能承担 React Native 0.87 的哪些 iOS 学习环节?
可以,但需要准确区分“写跨平台代码”和“完成 iOS 原生构建”。Windows 能承担 JavaScript、TypeScript、页面和业务逻辑开发,也能运行 Android;iOS Simulator、Xcode 构建、原生依赖检查和真机签名仍需 macOS。
学习过程中什么时候应当切换到 Mac?
当你只学习组件、状态管理、接口调用或 Android 调试时,可以继续留在 Windows。第一次需要打开 iOS Simulator、执行 run-ios、安装 CocoaPods 依赖、连接 iPhone 或处理签名时,就应切换到 Mac。
远程 Mac 是否支持 React Native 的 iOS 模拟器流程?
可以,只要远程主机是真实运行 macOS 的 Mac,并且 Xcode、命令行工具与对应 Simulator 运行时已经准备好。远程桌面只是控制方式,真正的 iOS 构建仍在远程 Mac 上完成;画面延迟可能影响点击体验,但不会把构建任务转移到 Windows。
Expo Go 的预览能力和 Xcode 构建是什么关系?
不能完全代替。Expo Go 适合学生快速预览 JavaScript 界面,但只能使用已经包含在客户端中的原生能力;自定义原生库、权限、图标、启动页和正式构建需要 development build 或其他 iOS 构建流程。查看 Expo Go 与 development build 的区别
第一次进行 React Native iOS 构建前应检查哪些项目?
准备代码仓库、项目锁定版本、Node.js、Xcode、Command Line Tools、iOS Simulator 运行时和原生依赖安装方式即可开始模拟器练习。真机调试和发布再准备签名、证书与 provisioning profile,不要把所有发布配置提前塞进第一次入门构建。
如果你当前方案是“只用 Windows + 零散找在线构建”,常见缺点是无法本地打开 iOS Simulator、原生报错上下文不完整,而且每次构建都可能受排队、缓存和项目配置限制影响;如果使用 macOS 虚拟机,又容易遇到性能、系统兼容和图形加速问题。对只想完成课程 iOS 验证的学生来说,SSHMac 提供的远程真实 Mac 更适合按作业期限临时使用:你可以先在 Windows 写完代码,到了验证节点再租用 Mac,而不必立刻购买整机。
如果你想采用这条双轨路线,建议先根据课程截止日期决定远程 Mac 使用时长。长期高频重负载开发、需要持续连接实体 iPhone 或依赖物理接口的项目,仍更适合自购 Mac;但对首次学习 React Native 0.87、偶尔运行 Xcode 和 iOS Simulator 的场景,短期远程 Mac 通常更容易控制成本与试错范围。