首先需要说明react-native官方只维护最新版本的工具链,所以在后需要搭建环境过程中需谨慎选择所需要的工具链和sdk等等。
提示:有条件的情况下建议使用手机热点的方式,下载速度很快。
必须安装的依赖有:Node、Watchman 和 Xcode。
1、安装homebrew
终端执行
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
由于安装过程实在缓慢,最后参考如下文档方法成功安装。
可以使用清华大学的镜像源来安装
然后安装Node和Watchman
Watchman则是由 Facebook 提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager 可以快速捕捉文件的变化从而实现实时刷新)。
brew install node && brew install watchman
注意:node版本需>10
安装完 Node 后建议设置 npm 镜像(淘宝源)以加速后面的过程(或使用科学上网工具)。
# 使用nrm工具切换淘宝源npx nrm use taobao
# 如果之后需要切换回官方源可使用 npx nrm use npm
2、安装Xcode
appstore里下载Xcode
React Native 目前需要Xcode 10 或更高版本。你可以通过 App Store 或是到Apple 开发者官网上下载。这一步骤会同时安装 Xcode IDE、Xcode 的命令行工具和 iOS 模拟器。
Xcode是用来构建react-native项目的ios工具,与之对应的是安卓的Android Studio
3、Xcode 的命令行工具
启动 Xcode,并在Xcode | Preferences | Locations菜单中检查一下是否装有某个版本的Command Line Tools。Xcode 的命令行工具中包含一些必须的工具,比如git等。
如果你之前全局安装过旧的react-native-cli命令行工具,请使用npm uninstall -g react-native-cli卸载掉它以避免一些冲突。
至此,react-native在Mac端所需要的环境已经搭建完毕。
下面让我们开始初始化一个项目
npx react-native init xxx
这里有一点需要特别注意:不要单独使用常见的关键字作为项目名(如class, native, new, package等等)。请不要使用与核心模块同名的项目名(如react, react-native等)。请不要在目录、文件名中使用中文、空格等特殊符号。
提示:可以使用--version参数(注意是两个杠)创建指定版本的项目。例如npx react-native init MyApp --version 0.44.3。注意版本号必须精确到两个小数点。
项目初始化完成可以看到上图所示界面。
下面我们把项目编译一下
终端执行
yarn ios
# 或者
yarn react-native run-ios
终端执行的命令需要等待很久,建议使用xcode运行项目,且可以自己选择模拟器型号。
上图是launchPackager,也就是前端打包编译react-native项目时的服务器,执行命令后会自动打开此打包器。在开发过程中无需关闭它,只需要刷新模拟器中的页面即可。
最终可以看到在模拟器中有如下画面,就是前端编译运行react-native项目成功。
在此需要说明的是刚才提到的Xcode,同样可以用来打包运行react-native
我们在Xcode中打开刚才的项目
必须要特别注意的是Xcode只能识别ios目录,并对其进行编译和打包。所以一定要打开ios目录而不是根目录。也就是xxx.xcworkspace
在Xocde中打开项目,如上图。
如上图是在Xcode中打开ShopPortal中的ios目录后的界面。
现在我们点击左上角的灰色启动按钮来启动项目
正常情况下,会看到Xcode中提示build successful的弹窗。
此时项目已经被启动在模拟器中。如上图。
在左上角可以选择切换模拟器或者连接真机,这里就不细说了。将会在后续的系列文章中具体介绍。
同样的如果想在终端中启动其他版本的模拟器也是可以的只需要执行以下命令
yarn react-native run-ios --simulator “xxx”;
如使用IPhone 8模拟器启动项目
yarn react-native run-ios --simulator "IPhone 8”
至此,mac系统下ios环境搭建教程全部结束。
下一篇将介绍Windows系统下Android环境搭建
如果你在搭建环境过程中遇到任何问题,欢迎在下方评论,我会第一时间回复。