萬事開頭難html
做爲一隻進入ECMAScript世界不久的菜鳥,已經被React Native的名氣驚到了,開源一週數萬星勾起了我濃烈的興趣。新年新氣象,來個HellWorld壓壓驚吧^_^(故意少打個'o')node
具體的詳細教程這裏都有,我就說說這裏沒找到的幾個坑,因爲大部分資料仍是0.1.4版本的react-native,筆者用最新的0.1.7和現有的不少是不同的。react
http://reactnative.cn/docs/android-setup.html#contentandroid
Android SDK下載:ios
原本抱着僥倖心理想試試能不能再低版本Android環境下編譯,答案是,不能!臉書工程師的代碼會校驗當前Android Platform API 版本是否是=== 23,git
解決方案:能夠先在http://pan.baidu.com/s/1eQppdPC 這裏下載Android Dev Tools,而後用國內的鏡像地址設置代理再下載所須要的各類SDK,安卓資源站在這裏,代理設置方法也有http://androiddevtools.cn/github
nodeJS設置鏡像:npm
這應該是開發node都知道的,我是用cnpm替代npm解決的,react-native init這條命令會拉不少dependency,不用國內的鏡像要等死了。windows
因爲臉書的工程師都是用的mac電腦,對windows支持不佳,並且他們估計也沒考慮到Windows能夠裝一種Cygwin的神奇軟件。若是過程當中出現了這個:react-native
ERROR Watchman was not found in PATH. Seehttps://facebook.github.io/watchman/docs/install.html for installation instructions
{"code":"ENOENT","errno":"ENOENT","syscall":"spawn watchman","path":"watchman","spawnargs":["--no-pretty","get-sockname"]}
Error: Watchman was not found in PATH. See https://facebook.github.io/watchman/docs/install.htmlfor installation instructions
at exports._errnoException (util.js:874:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
at onErrorNT (internal/child_process.js:344:16)
at doNTCallback2 (node.js:441:9)
at process._tickCallback (node.js:355:17)
在mac中說明沒安裝上監視文件的watchman,可是我很是納悶爲何windows下起react-native Server會報這個錯,費勁千辛萬苦,發現個人Cygwin迷惑了react-native,環境中含有Linux命令,而後被斷定爲Linux或mac OS系統,而後去執行目前只有Linux和MAC纔有的watchman程序,windows下是不須要的並且要在:
項目名\node_modules\react-native\packager\react-packager\\src\FileWatcher\index.js 中把MAX_WAIT_TIME這個變量改的很長(不要超過了整數最大值),否則25秒後依然報timeout錯。
真機調試白屏,因爲AVD相對比較慢,筆者直接祭出安卓6.0的真機USB調試的,發現全都是白的,啥也沒有,查閱資料發現這是由於顯示懸浮窗這個權限被拒絕了,去手機權限中心容許這一條就能夠了(這是一個用來彈出開發菜單的浮窗)。
安卓就兩條命令react-native start;react-native run-android,ios只要後面一條,然而個人黑蘋果虛裏脊慢的不要不要的,先玩玩安卓了。
AVD是不須要任何配置就能夠直接用react-native run-android跑起來的,真機上會出現紅色報錯,須要進開發選項Dev Settings去配置Debug Server host(最後一個選項),設置成PC的內網IP:8081就能夠了。附圖↓ (一個js文件變成apk真的很酷炫,搖一搖就能實時更新到最新代碼更酷炫~)
此處只是列舉了幾個耗時較長的坑,目前安卓端和Windows開發環境還不成熟,想起了2年前coscos2d-x還不成熟時的踩坑噩夢。很久沒碰cocos2d-x了,想一想那時候寫的C++好菜,如今連菜都算不上了,cocos2dx愈來愈主流,然而我卻快忘記了。但願React Native在開源社區下更快完善,慢慢成爲主流,讓全棧JS變成萬金油全堆JS。