本文主要介紹Mac開發(fā)平臺(tái)的React Native環(huán)境搭建(我只是官方教程的搬運(yùn)工)。
軟件安裝
必選工具
Homebrew
這個(gè)我在安裝cocoapods時(shí)已經(jīng)安裝過(guò),所以具體會(huì)遇到什么問(wèn)題也不清楚,暫時(shí)略過(guò)。
Node
安裝語(yǔ)句,命令行輸入:
brew install node
如果Homebrew的版本過(guò)低,會(huì)自動(dòng)進(jìn)行升級(jí),然后安裝node。
安裝node后設(shè)置npm鏡像以加速后面的過(guò)程(官方教程這樣寫)。
npm config set registry https://registry.npm.taobao.org --global
React Native的命令行工具(react-native-cli)
React Native的命令行工具用于執(zhí)行創(chuàng)建、初始化、更新項(xiàng)目、運(yùn)行打包服務(wù)(packager)等任務(wù)。
npm install -g react-native-cli
Xcode
這個(gè)是標(biāo)配= =就不做贅述了。
可選工具
Watchman
Watchman是由Facebook提供的監(jiān)視文件系統(tǒng)變更的工具。安裝此工具可以提高開發(fā)時(shí)的性能(packager可以快速捕捉文件的變化從而實(shí)現(xiàn)實(shí)時(shí)刷新)。
brew install watchman
測(cè)試安裝
創(chuàng)建項(xiàng)目
react-native init AwesomeProject
創(chuàng)建好項(xiàng)目后,命令行會(huì)給出工程路徑,打開xcodeproj文件,即可打開項(xiàng)目。
修改項(xiàng)目
在我喜歡的編輯器(我沒有喜歡的編輯器)打開index.ios.js并隨便改上幾行。
在iOS Emulator中按下?-R就可以刷新APP并看到你的最新修改!
總結(jié)
這個(gè)沒有Cocoapods安裝那么坑,基本按照官方教程就可以,本來(lái)記錄是為了記錄安裝過(guò)程的坑,結(jié)果很順利,但還是發(fā)了吧。學(xué)習(xí)新技能?。?!
回家之后,發(fā)現(xiàn)的問(wèn)題
在公司編譯沒問(wèn)題,回家重新配置一下,發(fā)現(xiàn)編譯iOS工程時(shí)報(bào)錯(cuò),shell script invocation error,修改方式是在工程設(shè)置中,Build Phases->Bundle React Native code and images->勾選Run script only when installing
然后編譯,又出了第二個(gè)錯(cuò):
Unpacking /Users/air/.rncache/boost_1_63_0.tar.gz...
tar: (Empty error message)
tar: Error exit delayed from previous errors.
Command /bin/sh failed with exit code 1
我把Derived Data刪掉,Clean編譯之后,又出了第三個(gè)錯(cuò)
'boost/iterator/iterator_adaptor.hpp' file not found
產(chǎn)生原因:
- /Users/Vanessa/.rncache 中 boost_1_63_0.tar.gz, double-conversion-1.1.5.tar.gz, folly-2016.09.26.00.tar.gz, glog-0.3.4.tar.gz 文件下載不完整
- node_modules/react-native/third-party 文件不完整
解決方案:
- 刪除 .rncache 后重新下載,或手動(dòng)下載后放入 .rncache 中
- 把以上文件解壓后放入 node_modules/react-native/third-party 下
Clean & Build
問(wèn)題還是沒解決。。。暫時(shí)放棄。。。
運(yùn)行項(xiàng)目報(bào)錯(cuò)
升級(jí)到Xcode8后,運(yùn)行ReactNative 的項(xiàng)目會(huì)報(bào)錯(cuò) ignoring return value of function declared with warn_unused_result attribute
解決方法:RCTWebSocket => TAGETS =>Build Settings => Custom Compiler Flags 去掉 -Werror -Wall兩個(gè)flags 再運(yùn)行項(xiàng)目就可以了