Android工程師初探React-Native

此文是以一名Android工程師的角度來(lái)觀察和學(xué)習(xí)React-Native, 如果你是一名Android工程師, 對(duì)React-Native感興趣, 那么閱讀此文可能會(huì)有收獲.

另外, 我也是React-Native的初學(xué)者, 后續(xù)我會(huì)將學(xué)習(xí)React-Natvie的心得及時(shí)發(fā)布給大家. 如果您想學(xué)習(xí)有關(guān)RN(React-Native的簡(jiǎn)稱(chēng))的高級(jí)知識(shí), 不好意思, 請(qǐng)繞行, 以免耽誤您的寶貴時(shí)間!

好的, 那我們正式開(kāi)始第一篇...

React-Native環(huán)境搭建

官方中文網(wǎng)站說(shuō)的已經(jīng)非常清楚了, 詳情可參考鏈接: http://reactnative.cn/docs/0.37/getting-started.html#content

在此我將官方的說(shuō)法總結(jié)一下.

1 . 首先你需要翻墻下載Chocolatey包管理器, 這個(gè)工具可以方便你安裝Python和NodeJs. 但實(shí)際上,如果你翻墻不方便的話, 咱可以自己手動(dòng)安裝Python和NodeJs
2 . 要安裝Python2而不是Python3
3 . 不要安裝NodeJs 7.1的版本, 否則在windows系統(tǒng)上會(huì)有問(wèn)題
4 . 附上Python和NodeJs的下載鏈接: http://pan.baidu.com/s/1skUPPMX
5 . 安裝完NodeJs之后, 你就可以在命令行使用nmp命令了. 我們需要用nmp命令來(lái)安裝React Native的命令行工具-->react-native-cli . 相關(guān)命令如下:

   npm install -g yarn react-native-cli

在運(yùn)行此命令之前, 建議設(shè)置npm鏡像, 否則很有可能訪問(wèn)失敗(或者也可以翻墻解決這個(gè)問(wèn)題).

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

運(yùn)行成功后如下圖所示:

1480503806147.png

6 . 搭建Android Studio 2.0+開(kāi)發(fā)環(huán)境, 作為Android開(kāi)發(fā)人員, 這個(gè)步驟應(yīng)該已經(jīng)非常熟悉, 我不做過(guò)多介紹
7 . 項(xiàng)目初始化(此操作需要翻墻執(zhí)行, 這個(gè)命令會(huì)初始化一個(gè)工程久橙、下載React Native的所有源代碼和依賴包)

    react-native init AwesomeProject 

運(yùn)行成功后命令行如下所示:

1480602176992.png

下載下來(lái)后目錄結(jié)構(gòu)如下所示:

1480496515529.png

注意: 此命令即使在翻墻情況下失敗率也是比較高的, 尤其在國(guó)內(nèi)網(wǎng)絡(luò)很不穩(wěn)定, 所以一定要保持耐心. 如果運(yùn)行出錯(cuò), 很有可能就是網(wǎng)絡(luò)原因, 而不是你的命令出了問(wèn)題.

8 . 部署項(xiàng)目

作為Android開(kāi)發(fā)人員,需要進(jìn)入android目錄進(jìn)行相關(guān)操作:

1480496617654.png

從這個(gè)目錄可以看出, 這是一個(gè)典型的Android Studio項(xiàng)目文件, 你可以使用Android Studio工具導(dǎo)入這個(gè)項(xiàng)目, 然后直接部署在你的模擬器或者真機(jī)上. 如果是前端開(kāi)發(fā)人員, Studio玩的不熟的話, 官方文檔建議運(yùn)行如下命令進(jìn)行部署:

react-native run-android

但是作為Android開(kāi)發(fā)人員, 我覺(jué)得此命令不好控制, 萬(wàn)一運(yùn)行失敗不好調(diào)試, 所以還是直接用Studio運(yùn)行比較靠譜.

如何運(yùn)行項(xiàng)目

1 . 必須啟動(dòng)ReactNative服務(wù)器.

首先進(jìn)入項(xiàng)目根目錄, 按住shift鍵,然后點(diǎn)擊鼠標(biāo)右鍵, 選擇打開(kāi)命令行窗口(你可以在命令行中切換到項(xiàng)目根目錄):

1480497462433.png

然后調(diào)用如下命令啟動(dòng)服務(wù)器:

    react-native start

啟動(dòng)后界面如下所示:

1480497551055.png

可以用瀏覽器訪問(wèn) http://localhost:8081/index.android.bundle?platform=android 看看是否可以看到打包后的腳本。第一次訪問(wèn)通常需要十幾秒腿时,并且在packager的命令行可以看到進(jìn)度條.

2 . 使用Studio導(dǎo)入項(xiàng)目, 然后運(yùn)行在模擬器上

這是導(dǎo)入項(xiàng)目之后的結(jié)果:

1480497646105.png

搖晃設(shè)備或按Menu鍵:
(1)可以打開(kāi)調(diào)試菜單,點(diǎn)擊Dev Settings

1480498139616.png

(2)選Debug server host&port for device,輸入你的正在運(yùn)行packager的那臺(tái)電腦的局域網(wǎng)IP加:8081(同時(shí)要保證手機(jī)和電腦在同一網(wǎng)段贴汪,且沒(méi)有防火墻阻攔), 如果是Genymotion模擬器,可以直接寫(xiě)成10.0.3.2:8081, 如果是原生模擬器,可以寫(xiě)成10.0.2.2:8081

1480498283601.png

(3)再按back鍵返回播赁,再按Menu鍵,在調(diào)試菜單中選擇Reload JS薪铜,就應(yīng)該可以看到運(yùn)行的結(jié)果了众弓。如果真實(shí)設(shè)備白屏但沒(méi)有彈出任何報(bào)錯(cuò),可以在安全中心里看看是不是應(yīng)用的“懸浮窗”的權(quán)限被禁止了隔箍。

1480498327424.png

3 . 如何修改頁(yè)面內(nèi)容

ReactNative在Android上運(yùn)行的程序可以認(rèn)為就是一個(gè)殼子或者容器, 真正的內(nèi)容來(lái)源于服務(wù)器上的網(wǎng)頁(yè)(實(shí)際上是個(gè)js文件), 這個(gè)js文件就是index.android.js

1480499270200.png

所以, 如果你想修改頁(yè)面的顯示內(nèi)容, 只需要修改index.android.js文件就可以了, 不需要再動(dòng)Android項(xiàng)目里的任何代碼了.

既然這樣, 那么我們的app也就只需要在模擬器或真機(jī)上部署一次, 以后如果要修改了js文件, 只需要Reload一下就可以, 不需要再次部署. 從而大大減少了重新編譯代碼的時(shí)間(經(jīng)常用Studio開(kāi)發(fā)的同學(xué)應(yīng)該理解這個(gè)痛吧)

1480427145920.png

使用什么開(kāi)發(fā)工具

由于以后幾乎不用寫(xiě)Java代碼了, 基本上都是寫(xiě)js腳本了, 所以開(kāi)發(fā)工具也得換一下了. 寫(xiě)js腳本的話開(kāi)發(fā)工具就選擇性比較大了, 有些哥們用vim來(lái)搞, 有些用記事本來(lái)搞. 當(dāng)然, 我們?yōu)榱颂岣咝? 并適當(dāng)?shù)玫讲糠痔崾竞透吡溜@示, 還是不要搞那么原始了. 目前前端開(kāi)發(fā)人員用的比較火的軟件叫做Sublime, 可以推薦給大家.

1480500072319.png

下載地址: http://pan.baidu.com/s/1skUPPMX
這是一個(gè)免安裝版, 可以直接運(yùn)行.

下一篇準(zhǔn)備介紹RN的基本語(yǔ)法, 敬請(qǐng)期待...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谓娃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜒滩,更是在濱河造成了極大的恐慌滨达,老刑警劉巖奶稠,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異弦悉,居然都是意外死亡窒典,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)稽莉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瀑志,“玉大人,你說(shuō)我怎么就攤上這事污秆∨恚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵良拼,是天一觀的道長(zhǎng)战得。 經(jīng)常有香客問(wèn)我,道長(zhǎng)庸推,這世上最難降的妖魔是什么常侦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮贬媒,結(jié)果婚禮上聋亡,老公的妹妹穿的比我還像新娘。我一直安慰自己际乘,他們只是感情好坡倔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著脖含,像睡著了一般罪塔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上养葵,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天征堪,我揣著相機(jī)與錄音,去河邊找鬼关拒。 笑死请契,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夏醉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼涌韩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畔柔!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起臣樱,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤靶擦,失蹤者是張志新(化名)和其女友劉穎腮考,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體玄捕,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踩蔚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枚粘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馅闽。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖馍迄,靈堂內(nèi)的尸體忽然破棺而出福也,到底是詐尸還是另有隱情,我是刑警寧澤攀圈,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布暴凑,位于F島的核電站,受9級(jí)特大地震影響赘来,放射性物質(zhì)發(fā)生泄漏现喳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一犬辰、第九天 我趴在偏房一處隱蔽的房頂上張望嗦篱。 院中可真熱鬧,春花似錦忧风、人聲如沸默色。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腿宰。三九已至,卻和暖如春缘厢,著一層夾襖步出監(jiān)牢的瞬間吃度,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工贴硫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留椿每,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓英遭,卻偏偏與公主長(zhǎng)得像间护,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挖诸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,841評(píng)論 25 707
  • 盡管在移動(dòng)開(kāi)發(fā)中,原生APP的開(kāi)發(fā)成本很高,但現(xiàn)階段基于原生開(kāi)發(fā)仍然是必須的,因?yàn)閃eb的用戶體驗(yàn)仍無(wú)法超越Nat...
    奔跑的大橙子閱讀 5,388評(píng)論 0 11
  • React Native嵌入Android原生項(xiàng)目中 開(kāi)發(fā)環(huán)境準(zhǔn)備 首先你要搭建好React Native for...
    呼呼哥閱讀 638評(píng)論 3 1
  • 什么是模式 引用《Java與模式》 模式化的過(guò)程就是把問(wèn)題抽象化汁尺,在忽略掉不重要的細(xì)節(jié)后,發(fā)現(xiàn)問(wèn)題的一般性本質(zhì)多律,并...
    張年輪閱讀 619評(píng)論 0 3
  • 準(zhǔn)備材料 開(kāi)始構(gòu)思 作品出籠 快樂(lè)的金魚(yú)兄弟 在一個(gè)美麗的池塘里有一條紅色的小金魚(yú)痴突,她一個(gè)人游來(lái)游去好孤單奥选!這時(shí)...
    智悲德育閱讀 489評(píng)論 0 0