把React Native組件嵌入到iOS

要求:

1桩盲、熟悉Xcode編程

2、了解終端常用命令

3湃番、會(huì)用CocoaPods做iOS程序的依賴管理

第一步:開發(fā)環(huán)境搭建

1夭织、CocoaPods的安裝,如果已安裝完吠撮,直接跳過該步驟尊惰。

2、搭建RN開發(fā)環(huán)境,如果已經(jīng)搭建好弄屡,直接跳過該步驟戴卜。

第二步:把React Native組件嵌入到iOS

1、設(shè)置項(xiàng)目目錄結(jié)構(gòu)

打開現(xiàn)有的iOS項(xiàng)目琢岩,在其中創(chuàng)建一個(gè)/ios子目錄;然后將根目錄中所有的iOS文件都拷貝到 /ios?子目錄中师脂。

設(shè)置項(xiàng)目目錄結(jié)構(gòu)

2担孔、安裝JavaScript依賴包

2.1、創(chuàng)建安裝依賴包文件package.json

打開終端吃警,cd到根目錄糕篇,執(zhí)行命令

$ ?npm init

跟著提示一步步執(zhí)行,主要設(shè)置的是名字(name?不支持大寫)和版本酌心,其他默認(rèn)或者不輸入拌消。

創(chuàng)建安裝依賴包文件package.json

執(zhí)行成功之后會(huì)看到基本的json樣式,可以在根目錄中看到創(chuàng)建成功的package.json文件安券。

package.json文件

2.2墩崩、配置安裝依賴包文件package.json

按下圖紅色區(qū)域方式配置package.json文件。

"private": true,

"scripts": {

????"start": "node node_modules/react-native/local-cli/cli.js start"

},

配置安裝依賴包文件package.json

2.3侯勉、添加JS環(huán)境

使用終端鹦筹,cd到根目錄,執(zhí)行下面的命令

$ npm install --save react

$ npm install --save react-native

2.4址貌、報(bào)錯(cuò)處理

執(zhí)行完铐拐,可能會(huì)出現(xiàn)下圖中的報(bào)錯(cuò)信息。

報(bào)錯(cuò)信息

報(bào)錯(cuò)信息1:

npm WARN react-native@0.55.4 requires a peer of react@16.3.1 but none is installed. You must install peer dependencies yourself.

解決方案:執(zhí)行命令

$ npm install --save react@16.3.1

報(bào)錯(cuò)信息2:

npm WARN eslint-plugin-react-native@3.2.1 requires a peer of eslint@^3.17.0 || ^4.0.0 but none is installed. You must install peer dependencies yourself.

解決方案:Xcode方式打開package.json文件练对,添加如下兩行遍蟋,然后回到終端,執(zhí)行命令

$ npm install

添加依賴

補(bǔ)充:dependencies中的reactreact-native的版本取決于你的具體需求螟凭,推薦使用最新版本虚青。可以使用下面的命令查看當(dāng)前的最新版本赂摆。

$ npm info react

$ npm info react-native

成功安裝JavaScript依賴包挟憔,會(huì)看到根目錄多了2個(gè)文件。

成功安裝JS依賴包

3烟号、創(chuàng)建Podfile文件

3.1绊谭、創(chuàng)建Podfile

終端cd到/ios子目錄,?執(zhí)行下面命令

$ pod init

創(chuàng)建Podfile

3.2、配置Podfile

# Uncomment the next line to define a global platform for your project

# 別忘了把這里的注釋去掉

platform :ios, '9.0'

# target的名字一般與你的項(xiàng)目名字相同

target 'RNInsertApp' do

? ? # 'node_modules'目錄一般位于根目錄中

? ? # 但是如果你的結(jié)構(gòu)不同汪拥,那你就要根據(jù)實(shí)際路徑修改下面的':path'

? ? pod 'React', :path => '../node_modules/react-native', :subspecs => [

? ? ? ? 'Core',

? ? ? ? 'CxxBridge',

? ? ? ? 'DevSupport',

? ? ? ? 'RCTText',

? ? ? ? 'RCTNetwork',

? ? ? ? 'RCTWebSocket',

? ? ]

? ? # 如果你的RN版本 >= 0.42.0达传,則加入下面這行

? ? pod "yoga", :path => "../node_modules/react-native/ReactCommon/yoga"

? ? # 如果RN版本 >= 0.45則加入下面三個(gè)第三方編譯依賴

? ? pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'

? ? pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'

? ? pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

end

配置Podfile

3.3、安裝React Native的pod包

創(chuàng)建好了Podfile后,就可以開始安裝React Nativepod包了宪赶。執(zhí)行命令

$ pod install

安裝React Native的pod包


4宗弯、index.js文件(rn的入口函數(shù))

4.1、創(chuàng)建index.js文件

終端cd到根目錄,?執(zhí)行下面命令

$ touch index.js

創(chuàng)建index.js文件

4.2搂妻、添加你自己的React Native代碼

React Native代碼

5蒙保、編寫代碼調(diào)用RN

打開/ios子目錄中的".xcworkspace",編寫調(diào)用RN代碼欲主。

調(diào)用RN代碼

6邓厕、配置info.plist

Apple默認(rèn)會(huì)阻止讀取不安全的HTTP鏈接,我們需要把本地運(yùn)行的Packager服務(wù)添加到info.plist中扁瓢,以便能正常訪問Packager服務(wù)详恼。

NSAppTransportSecurity

NSExceptionDomains

localhost

NSTemporaryExceptionAllowsInsecureHTTPLoads

配置info.plist

7、運(yùn)行Package

運(yùn)行Package引几,啟動(dòng)開發(fā)服務(wù)器昧互。終端cd到項(xiàng)目根目錄中,?執(zhí)行下面命令

$ npm start

運(yùn)行Package

8伟桅、運(yùn)行應(yīng)用

打開/ios子目錄中的".xcworkspace"敞掘,運(yùn)行應(yīng)用。

運(yùn)行應(yīng)用

項(xiàng)目源碼

RN嵌入原生App源碼

參考博客

reactnative.cn

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楣铁,一起剝皮案震驚了整個(gè)濱河市渐逃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌民褂,老刑警劉巖茄菊,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赊堪,居然都是意外死亡面殖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門哭廉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脊僚,“玉大人,你說我怎么就攤上這事遵绰×苫希” “怎么了耕捞?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵菊值,是天一觀的道長熄诡。 經(jīng)常有香客問我吭从,道長,這世上最難降的妖魔是什么憋肖? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任朝群,我火速辦了婚禮姜盈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘猪腕。我一直安慰自己冗澈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布陋葡。 她就那樣靜靜地躺著亚亲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腐缤。 梳的紋絲不亂的頭發(fā)上朵栖,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音柴梆,去河邊找鬼。 笑死终惑,一個(gè)胖子當(dāng)著我的面吹牛绍在,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雹有,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼偿渡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了霸奕?” 一聲冷哼從身側(cè)響起溜宽,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎质帅,沒想到半個(gè)月后适揉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡煤惩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年嫉嘀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片魄揉。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡剪侮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洛退,到底是詐尸還是另有隱情瓣俯,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布兵怯,位于F島的核電站彩匕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏媒区。R本人自食惡果不足惜推掸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一桶蝎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谅畅,春花似錦登渣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至仇味,卻和暖如春呻顽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丹墨。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國打工廊遍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人贩挣。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓喉前,卻偏偏與公主長得像,于是被迫代替她去往敵國和親王财。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卵迂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 核心概念 如果你正準(zhǔn)備從頭開始制作一個(gè)新的應(yīng)用,那么React Native會(huì)是個(gè)非常好的選擇绒净。但如果你只想給現(xiàn)有...
    made_China閱讀 1,389評(píng)論 1 2
  • 如果你正準(zhǔn)備從頭開始制作一個(gè)新的應(yīng)用见咒,那么React Native會(huì)是個(gè)非常好的選擇。但如果你只想給現(xiàn)有的原生應(yīng)用...
    So_365閱讀 2,127評(píng)論 16 7
  • 開發(fā)平臺(tái):macOS 搭建開發(fā)環(huán)境 必需軟件 Homebrew, Mac系統(tǒng)的包管理器挂疆,用于安裝NodeJS和一些...
    MichaelLedger閱讀 4,752評(píng)論 0 3
  • 項(xiàng)目已經(jīng)迭代了很多版本改览,目前想在里面集成React native。以下是操作步驟缤言,由于一些坑已經(jīng)趟過恃疯,直接按照解決...
    兩個(gè)小棉襖閱讀 1,267評(píng)論 0 4
  • 如今今妄,很多家長抱怨最多的是孩子不聽話,孩子很難管鸳碧,家長在孩子面前半點(diǎn)威嚴(yán)沒有盾鳞。 只是家長從沒有想過為什么會(huì)變成這樣...
    橙澈_Cc閱讀 712評(píng)論 5 3