邂逅ReactNative(一):在windows下搭建開發(fā)環(huán)境

大家好,歡迎來到化簡成蝶時(shí)間!

此篇文章出自我的博客:http://blog.csdn.net/cy_shay


初識(shí)RN:

RN是Facebook在React.js Conf 2015大會(huì)上推出的,于同年4月開源的跨平臺(tái)移動(dòng)應(yīng)用開發(fā)框架;RN也是Facebook早先開源的UI框架React在原生移動(dòng)應(yīng)用平臺(tái)的衍生物,目前支持android和ios兩大平臺(tái)。RN使用Javascript語言,類似于HTML的JSX,以及CSS來開發(fā)移動(dòng)應(yīng)用,正如它的宣言:“Learn once,write anywhere ”一樣,提高多平臺(tái)的移動(dòng)應(yīng)用開發(fā)效率。了解更多!

windows下搭建開發(fā)環(huán)境:

RN官方中文網(wǎng):http://reactnative.cn/docs/0.47/getting-started.html

準(zhǔn)備工作

1. 安裝Python2而不是Python3,目前暫不支持Python3版本:下載地址

2. 安裝Node.js,非7.1版本,否則在windows系統(tǒng)上會(huì)有問題:下載地址

3. 安裝配置Git及環(huán)境變量:配置地址

4. 安裝配置JDK及環(huán)境變量:配置地址

5. 安裝配置SDK及環(huán)境變量:配置地址

開始安裝RN

設(shè)置npm鏡像,用以加速后面的過程(或科學(xué)上網(wǎng))。

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

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

安裝RN

Yarn是Facebook提供的替代npm的工具,可以加速node模塊的下載。RN的命令行工具用于執(zhí)行創(chuàng)建、初始化、更新項(xiàng)目、運(yùn)行打包服務(wù)(packager)等任務(wù)。

Node.js安裝完成以后會(huì)將自己添加到環(huán)境變量中,因?yàn)镹ode自帶npm所以可直接使用npm命令執(zhí)行。

npm install -g yarn react-native-cli

項(xiàng)目初始化

此命令會(huì)初始化一個(gè)工程,下載RN的所有源代碼和依賴包??稍谥付ㄎ募A下運(yùn)行以下命令,例如(AwesomeProject為工程名):

react-native init AwesomeProject

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

(以下命令快捷進(jìn)入方式:首先進(jìn)入項(xiàng)目根目錄,按住shift鍵,然后點(diǎn)擊鼠標(biāo)右鍵,選擇打開命令行窗口)

查看react-native版本,在項(xiàng)目根目錄下執(zhí)行:

react-native -version

請時(shí)刻保持react-native為最新版本:如何升級版本

1. 啟動(dòng)RN服務(wù)器:

react-native start

2. 可以用瀏覽器訪問http://localhost:8081/index.android.bundle?platform=android看看是否可以看到打包后的腳本。

第一次訪問通常需要十幾秒,并且在packager的命令行可以看到進(jìn)度條。

3. 運(yùn)行app(真機(jī)): react-native run-android 或 react-native run-ios

請使用android5.0及以上手機(jī),保持真機(jī)與電腦通過USB相連且在同一WiFi環(huán)境下

react-native run-android

4. 步驟3運(yùn)行后會(huì)自動(dòng)打開應(yīng)用界面

(1)首先嘗試晃動(dòng)手機(jī),正常情況會(huì)出現(xiàn)一個(gè)彈窗--選擇Dev Settings 根據(jù)截圖中最后一個(gè)提示填寫與你的本機(jī)相同的IP地址,如 192.168.1.1:8081,端口8081不變。然后返回--晃動(dòng)手機(jī)--彈窗--reload Js。

RN默認(rèn)是8081端口啟動(dòng)Node.js環(huán)境的,如果端口被占用就需要重新啟動(dòng)一個(gè),然后在手機(jī)上指定新的端口。例如:9999端口

(2)有些手機(jī)比如小米系統(tǒng)的,無法顯示彈窗,多半是因?yàn)橄到y(tǒng)將應(yīng)用的權(quán)限限制的原因。打開設(shè)置--應(yīng)用管理--找到我們的demo--權(quán)限管理--打開懸浮窗,重復(fù)步驟(1)即可。

(3)如果(1)中設(shè)置IP后依然存在問題,則嘗試設(shè)置反向代理adb reverse tcp:8081 tcp:8081

5. 如何修改頁面內(nèi)容:

RN在Android上運(yùn)行的程序可以認(rèn)為就是一個(gè)殼子或者容器,真正的內(nèi)容來源于服務(wù)器上的網(wǎng)頁(實(shí)際上是個(gè)js文件),這個(gè)js文件就是index.android.js,所以,如果你想修改頁面的顯示內(nèi)容,只需要修index.android.js文件就可以了,不需要再動(dòng)Android項(xiàng)目里的任何代碼了。

運(yùn)行開源項(xiàng)目

大部分開源項(xiàng)目并不是完整的項(xiàng)目, 缺少了項(xiàng)目的依賴, 就像我們運(yùn)行java沒有jdk環(huán)境一樣,而開源項(xiàng)目為了減少空間,并沒有提交node_mudules目錄,需要我們自己安裝,然后運(yùn)行項(xiàng)目即可。如何運(yùn)行

npm安裝node_modules:

npm install


踩過的坑

問題1.? RN紅屏之Could not connect to development server.

解決方案:

關(guān)閉電腦的防火墻

(1)正常情況下,在搖晃手機(jī)的彈窗中設(shè)置電腦的IP加端口8081可以解決。

(2)我的是設(shè)置了反向代理 adb reverse tcp:8081 tcp:8081才解決問題,如果設(shè)置不了,請重啟RN服務(wù)器。

(3)更多解決方案。


問題2. 運(yùn)行完項(xiàng)目直接閃退,可能是SDK版本存在問題

解決方案:

請確保以上應(yīng)用構(gòu)建版本與gradle版本可用!


最后,祝愿所有人都能搭建運(yùn)行成功!


分享一些完整的ReactNative開源項(xiàng)目:傳送門

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,229評論 25 708
  • 1.RN的環(huán)境配置 1.1 Windows的RN環(huán)境配置 軟件需要 注意電腦位數(shù)是32/64位對應(yīng)的軟件可能會(huì)不同...
    Hank_謝旱閱讀 1,433評論 7 13
  • 盡管在移動(dòng)開發(fā)中,原生APP的開發(fā)成本很高,但現(xiàn)階段基于原生開發(fā)仍然是必須的,因?yàn)閃eb的用戶體驗(yàn)仍無法超越Nat...
    奔跑的大橙子閱讀 5,486評論 0 11
  • 懂得珍惜,才知道得到的是滄海一滴。 懂得寬容,才能知道世界有多大。 懂的感恩,世界才會(huì)給我們下一次機(jī)會(huì)。 懂得行動(dòng)...
    悟吧一昧原創(chuàng)閱讀 213評論 0 0
  • wyx,我決定要寫一些話給你。 因?yàn)閯偛旁诿鞔_我們的關(guān)系時(shí),我覺得自己有點(diǎn)草率了,我想讓你知道,我不是一時(shí)興起,沖...
    是Ada閱讀 248評論 0 0

友情鏈接更多精彩內(nèi)容