在 windows 上开发 React Native IOS App 一定需要 Mac OS X 操作系统吗?答案几乎是肯定的,下面这是 2016 年的答案,时隔两年过去了依然没有什么好的解决方案。
create-react-native-app
+ Expo
倒是可以不需要 OS X 操作系统,但是需要一个 iPhone,我依然没有。即使有,这种方式也不适合用来开发。
所以,在 Windows 上安装虚拟机似乎是一个最佳选择。经过我的实践,只要电脑内存不小于 8 GB,处理器不是太渣开发体验基本上是可以接受的。
本文的写作顺序为:安装 VMware 14 =>
解锁 VMware =>
安装 OS X =>
更新操作系统 =>
安装开发工具 =>
运行 RN 初始化的应用
安装 VMware 14
以下是我的 VM,下载后解压,安装时双击、下一步就行了,里面包含有激活码。
解锁 VMware
苹果公司做了一些限制,不允许在虚拟机上安装 Mac OS,VMware 也应该没有拿到授权,所以默认是没有安装 Mac OS 的选项,不过有第三方工具是可以解锁这个功能的。这是此工具的下载地址:
解压后右键管理员身份运行 win-install.cmd
程序即可。
解锁功能后创建一个虚拟机,然后如图所示选中 Mac OS 的镜像,此镜像较大,可以去百度网盘下载,链接: 密码:ma9g
之后在自定义硬件的时候,分配的内存和 CPU 核心数都可以为主机的一半。按默认分配的也可以,后面随时都可以改的。(不过最好 CPU 是有多少给多少,因为虚拟机内操作系统的显卡是由主机的 CPU 虚拟化的,主机的处理器好不好会直接影响到安装后的系统画面是否流畅)
安装 OS X
初次打开虚拟机的时候是会有一个报错的,打开 Mac OS 的安装目录(非虚拟机安装目录),找到 macOS 10.12.vmx
文件,在 smc.present = "TRUE"
后面添加一行 smc.version = 0
。之后再次打开虚拟机就会进入加载系统的界面。
接下来来到下面这个界面,按如图所示的操作进行分区,然后将系统安装在此分区内。
重启后就是一些自定义设置了,建议先选择不连接到互联网(就算现在选择了联网也无法登陆 Apple ID),快速设置一个账户进入到系统。
进入到系统之后就可以安装 VMtools 了
安装好 VMtools 之后就可以让 Mac OS 全屏显示了
共享文件夹也顺便设置下吧,我这里把 Windows 的 D 盘和 OS X 做了一个共享,这样两个系统互相传输和访问文件就很方便了。
更新操作系统
到这里还不能说已经安装好了 OS X,因为还不能登录 Apple ID,至少我的是不能登陆的,它给了我这样的提示
需要使用安装 macOS 10.13 或更高版本的 Mac 才能以此 Apple ID 登录复制代码
所以,接下来要升级系统到 10.13,其实也很简单,打开 App Store,在更新页面的首页就有安装选项。
更新下载并安装完后,下次重启时会让登录 Apple ID,还会让输入上一次使用过的苹果设备的密码。
到这里就完成了 Mac OS X 的安装了。
安装开发工具
首先去 App Store 安装 XCode,大概有 5.3 G
接着打开终端运行一下命令安装包管理器 brew
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"复制代码
有了包管理器后就可以本方便地安装 node
$ brew install node复制代码
为了让 npm 下载东西比较快,这里设置下淘宝镜像
$ npm config set registry https://registry.npm.taobao.org --global$ npm config set disturl https://npm.taobao.org/dist --global复制代码
然后安装 yarn 和 react-native 命令行工具,这里 yarn 是可选的
$ npm install -g yarn react-native-cli复制代码
还是为了速度,再设置下 yarn 的淘宝镜像
$ yarn config set registry https://registry.npm.taobao.org --global$ yarn config set disturl https://npm.taobao.org/dist --global复制代码
到这里 React Native 的 IOS 环境就装完了
运行 RN 初始化的应用
用以下几条命令就可以初始化一个 React Native 应用并启动
$ react-native init testApp$ cd testApp$ react-native run-ios复制代码
图中为了节省时间是提前启动了一个 IOS 模拟器的,正常情况下它会在上面的命令执行后自动启动。
按 win + D 可以打开模拟器选项开启热加载,之后改动代码,页面就会自动刷新。
最后再来测试下虚拟机的性能,再用 XCode 打开此项目并启动了一个 8 plus 模拟器,两个模拟器同时运行加上 XCode、VSCode、Node 终端、浏览器也依然是非常流畅的。看来分配个 4 G 内存是完全 OK 的。
Enjoy it!?