React Native Android配置部署踩坑日記


萬事開頭難

作為一只進入ECMAScript世界不久的菜鳥,已經被React Native的名氣驚到了,開源一周數萬星勾起了我濃烈的興趣。新年新氣象,來個HellWorld壓壓驚吧^_^(故意少打個'o')

具體的詳細教程這里都有,我就說說這里沒找到的幾個坑,由於大部分資料還是0.1.4版本的react-native,筆者用最新的0.1.7和現有的很多是不一樣的。

http://reactnative.cn/docs/android-setup.html#content

00.第一個坑,安卓牆

Android SDK下載:

本來抱着僥幸心理想試試能不能再低版本Android環境下編譯,答案是,不能!臉書工程師的代碼會校驗當前Android Platform API 版本是不是=== 23,

解決方案:可以先在http://pan.baidu.com/s/1eQppdPC 這里下載Android Dev Tools,然后用國內的鏡像地址設置代理再下載所需要的各種SDK,安卓資源站在這里,代理設置方法也有http://androiddevtools.cn/

nodeJS設置鏡像:

這應該是開發node都知道的,我是用cnpm替代npm解決的,react-native init這條命令會拉很多dependency,不用國內的鏡像要等死了。

01.第二個坑,Cygwin環境沖突

由於臉書的工程師都是用的mac電腦,對windows支持不佳,而且他們估計也沒考慮到Windows可以裝一種Cygwin的神奇軟件。如果過程中出現了這個:

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錯。

10.第三個坑,白屏

真機調試白屏,由於AVD相對比較慢,筆者直接祭出安卓6.0的真機USB調試的,發現全都是白的,啥也沒有,查閱資料發現這是因為顯示懸浮窗這個權限被拒絕了,去手機權限中心允許這一條就可以了(這是一個用來彈出開發菜單的浮窗)。

11.真機測試

安卓就兩條命令react-native start;react-native run-android,ios只要后面一條,然而我的黑蘋果虛里脊慢的不要不要的,先玩玩安卓了。

AVD是不需要任何配置就可以直接用react-native run-android跑起來的,真機上會出現紅色報錯,需要進開發選項Dev Settings去配置Debug Server host(最后一個選項),設置成PC的內網IP:8081就可以了。附圖↓ (一個js文件變成apk真的很酷炫,搖一搖就能實時更新到最新代碼更酷炫~)

100.路漫漫,其坑多兮

此處只是列舉了幾個耗時較長的坑,目前安卓端和Windows開發環境還不成熟,想起了2年前coscos2d-x還不成熟時的踩坑噩夢。好久沒碰cocos2d-x了,想想那時候寫的C++好菜,現在連菜都算不上了,cocos2dx越來越主流,然而我卻快忘記了。希望React Native在開源社區下更快完善,慢慢成為主流,讓全棧JS變成萬金油全堆JS。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM