React Native初試:Windows下Andriod環(huán)境搭建

文章首發(fā)地址:Solinx
http://www.solinx.co/archives/507

最近想寫個App,又覺得Native App 太無趣了Web App又沒那么成熟然后發(fā)現(xiàn)了Facebook在9月發(fā)布的React Native比較新奇,所以決定搗鼓看看奸笤;  React Native為Facebook開源的使用Javascript與React開發(fā)Android丽猬、IOS原生跨平臺App杆煞,React也是Factbook開源的JS框架使用了虛擬DOM的概念寂玲,F(xiàn)actbook自己的應(yīng)用如Groups也是基于React Native在國內(nèi)也有淘寶iPad版本是喲個了React Native;  React Native最早支持的是Mac染苛,for Android windows的支持9月份才剛發(fā)布還存在不少坑;
基本環(huán)境安裝
  開發(fā)Android App當(dāng)然首先要安裝:JDK主到、Android SDK配置好JDk茶行、SDK環(huán)境變量;  安裝C++編譯環(huán)境(可以選擇Visual Studio 或mingw等)登钥,編譯nodejs的C++模塊會使用畔师;  安裝git、安裝Node.js環(huán)境牧牢;
React-Native 安裝
  如果沒有VPN最好設(shè)置npm鏡像不然及其考驗?zāi)愕哪托詎pm config set registry https://registry.npm.taobao.org
安裝 React-Nativenpm install -g react-native-cli
創(chuàng)建項目
進(jìn)入你希望項目存放的工作目錄看锉,運行
react-native init HelloWorld


請耐性等待姿锭,第一次下載依賴會比較久;
運行packager
npm start或react-native start


  查看 http://localhost:8081/index.android.bundle?platform=android 是否能打開伯铣;  啟動模擬器呻此,運行adb devices查看是否設(shè)備已連接上;保持packager開啟懂傀,另外打開一個命令行窗口趾诗,然后在工程目錄下運行
運行React Native

react-native run-android

異常
A problem occurred configuring project ':app'.> Could not resolve all dependencies for configuration ':app:_debugCompile'.> Could not find com.android.support:appcompat-v7:23.1.1.

解決方案:安裝Android Support Repository與Android Support Library
如沒有VPN要耐性等待,gradle下載一些依賴蹬蚁。
運行成功


生成APK
進(jìn)入項目目錄進(jìn)入Android目錄恃泪,在命令行運行:
gradlew assembleRelease

在React-native 0.14.2版本的時候會存在兩個坑,應(yīng)該算是Bug犀斋;https://github.com/danhanfry/react-native-windows-apk發(fā)現(xiàn)了解決方案贝乎;
坑 1:

A problem occurred starting process 'command 'react-native''

解決方案:進(jìn)入項目目錄》android目錄》app目錄打開react.gradle文件在文件頭加入:import org.apache.tools.ant.taskdefs.condition.Os找到
commandLine "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug

修改為:
if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine "cmd", "/c", "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug} else { commandLine "react-native", "bundle", "--platform", "android", "--dev", "true", "--entry-file", entryFile, "--bundle-output", jsBundleFileDebug, "--assets-dest", resourcesDirDebug}

找到:
commandLine "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease

修改為:
if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine "cmd","/c", "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease} else { commandLine "react-native", "bundle", "--platform", "android", "--dev", "false", "--entry-file", entryFile, "--bundle-output", jsBundleFileRelease, "--assets-dest", resourcesDirRelease}

坑2:
Execution failed for task ':app:bundleReleaseJsAndAssets'. > Process 'command 'cmd'' finished with non-zero exit value 1

解決方案:在HelloWorld\node_modules\react-native\packager\react-packager\src\SocketInterface目錄找到index.js文件在40行左右把:
const sockPath = path.join(tmpdir,'react-packager-' + hash.digest('hex') );

修改為:
let sockPath = path.join(tmpdir,'react-packager-' + hash.digest('hex'));if (process.platform==='win32'){sockPath = sockPath.replace(/^//, '')sockPath = sockPath.replace(///g, '-')sockPath = '\\.\pipe\' + sockPath}


生成成功后就可以在:android\app\build\outputs\apk目錄下看到生成的apk;
(對于坑2叽粹,我的做法是刪除node-modules重新npm install ,然后在進(jìn)行打包览效!十分有效!)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虫几,一起剝皮案震驚了整個濱河市锤灿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辆脸,老刑警劉巖但校,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啡氢,居然都是意外死亡状囱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門倘是,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亭枷,“玉大人,你說我怎么就攤上這事搀崭∵墩常” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵门坷,是天一觀的道長宣鄙。 經(jīng)常有香客問我,道長默蚌,這世上最難降的妖魔是什么冻晤? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮绸吸,結(jié)果婚禮上鼻弧,老公的妹妹穿的比我還像新娘设江。我一直安慰自己,他們只是感情好攘轩,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布叉存。 她就那樣靜靜地躺著,像睡著了一般度帮。 火紅的嫁衣襯著肌膚如雪歼捏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天笨篷,我揣著相機(jī)與錄音瞳秽,去河邊找鬼。 笑死率翅,一個胖子當(dāng)著我的面吹牛练俐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冕臭,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腺晾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辜贵?” 一聲冷哼從身側(cè)響起悯蝉,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎托慨,沒想到半個月后泉粉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡榴芳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跺撼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窟感。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖歉井,靈堂內(nèi)的尸體忽然破棺而出柿祈,到底是詐尸還是另有隱情,我是刑警寧澤哩至,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布躏嚎,位于F島的核電站,受9級特大地震影響菩貌,放射性物質(zhì)發(fā)生泄漏卢佣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一箭阶、第九天 我趴在偏房一處隱蔽的房頂上張望虚茶。 院中可真熱鬧戈鲁,春花似錦、人聲如沸嘹叫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罩扇。三九已至婆芦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喂饥,已是汗流浹背消约。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留仰泻,地道東北人荆陆。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像集侯,于是被迫代替她去往敵國和親被啼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

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