React-Native與iOS原生的集成步驟

需求:

最近準備在公司項目中使用RN锄俄,但羅馬不是一天建成的徘禁,沒辦法將項目中所有的代碼都換成RN,而且我也不認為全換成RN就是好的壹置,所以準備先將項目中的一些頁面改成RN開發(fā)。這篇文章就是與iOS原生集成的步驟表谊。
我將項目更新到了github上钞护,里面有很多我自己的理解,希望可以幫到各位讀者react-native-learn

如果遇到什么問題可以在評論區(qū)回復爆办,或者加QQ群397885169討論

步驟:

前提:電腦已經安裝過React-Native相關環(huán)境;
創(chuàng)建:首先我們創(chuàng)建一個iOS項目难咕,我命名為React-iOS;

  • 使用Cocoapods(官方推薦的辦法,如果想在項目中使用Cocoapods可以找一下唐巧寫的安裝教程)
  1. 創(chuàng)建Podfile Cocoapods通過解析Podfile指定的工程文件進行依賴安裝余佃,我們在工程目錄下創(chuàng)建一個Podfile文件:
platform :ios, ‘7.0’
target ‘React-iOS’ do
  pod 'React-iOS', :path => './node_modules/react-native', :subspecs => [
    'Core',
    'RCTImage',
    'RCTNetwork',
    'RCTText',
    'RCTWebSocket',
     # 添加你的項目中需要的其他三方庫
  ]
end

注意:要添加所有你需要的依賴暮刃。舉例來說,元素如果不添加RCTText依賴就不能運行爆土。

  1. 依賴文件安裝 進入工程目錄椭懊,執(zhí)行$ pod install,就完成了react-native工程包的集成雾消。
  2. 打開React-iOS.xcworkspace Cocoapods安裝成功之后灾搏,工程目錄會產生一個React-iOS.xcworkspace
    的工程文件,我們使用Xcode打開這個工程打開這個工程文件立润。
  • 不使用Cocoapods狂窑,手動集成

1.安裝react-native
我們在React-iOS項目目錄建一個reactnative目錄,用于存放我們的react-native相關文件桑腮,再創(chuàng)建一個package.json文件泉哈,用于初始化react-native。

文件夾截圖.png
//package.json
{
//dependencies中的react指的是React的版本號破讨,react-native就是React-Native的版本號啦~
    "name": "React-iOS",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "react": "^15.3.1",
        "react-native": "^0.32.0"
    }
}

執(zhí)行安裝:$ cd reactnative $ npm install
安裝成功后丛晦,reactnative目錄會產生一個node_modules,里面就是react-native依賴的所有項目包提陶。
2.創(chuàng)建index.ios.js文件
在reactnative目錄下創(chuàng)建index.ios.js文件:

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TouchableOpacity,
} from 'react-native';

class ReactiOS extends Component {
  render() {
    return (
      <View style={styles.container}>
           <Text>Hello World!</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    backgroundColor : 'red ',
    height:100,
    flexDirection : 'row '
  },
});

AppRegistry.registerComponent('ReactiOS', () => ReactiOS);

這就是我們js程序的入口文件烫沙。ok,以上我們已經完成react-native的準備工作隙笆,接下來要開始集成啦~
3.手動集成react-native

  • 添加react-native工程文件由于項目沒有使用Cocoapods進行第三方依賴包管理锌蓄,所有我們需要手動將react-native工程包添加到我們的原生ios工程中。打開reactnative/node_modules/react-native
    目錄撑柔,找到相關的項目包瘸爽,將React相關的工程包手動添加到項目中:
添加`react-native/React/React.xcodeproj`到項目中
添加`react-native/Libraries/Network/RCTNetwork.xcodeproj`到項目中
添加`react-native/Libraries/Text/RCTText.xcodeproj`到項目中
添加`react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj`到項目中
添加`react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj`到項目中

添加的原則是,你需要什么就添加什么工程包铅忿。好了剪决,我們已經將React相關工程包手動添加到React-iOS工程項目的reactnative目錄下撰豺。

  • 添加相關frameworks文件接下來要將相關的frameworks文件添加到工程中市埋,React-iOS -> TARGETS -> React-iOS -> Build Phases -> Link Binary Width Libraries
    添加frameworks.png
  • 將所有.a文件選中并添加
    添加.a文件.png
  • 添加搜索頭文件的地址
    React-iOS -> TARGETS -> React-iOS -> Build Settings -> Header Search Paths,添加一條$(SRCROOT)/reactnative/node_modules/react-native/React锈遥,選擇recursive肢扯。
    這樣我們就react-native集成到現(xiàn)有的ios工程中了妒茬。

錯誤:

1.錯誤1

錯誤1.jpg

解決方法:
React-iOS -> TARGETS -> React-iOS -> Build Phases -> Link Binary Width Libraries中導入libz.1.1.3.tbd,libstdc++.tbd兩個文件

結語:

通過上面的步驟蔚晨,就可以將React-Native項目集成到原有的項目中了,我將在下一篇文章中告訴大家如何運行項目中的RN頁面,還有RN跳轉到原生頁面的方法铭腕。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末银择,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子累舷,更是在濱河造成了極大的恐慌浩考,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件被盈,死亡現(xiàn)場離奇詭異析孽,居然都是意外死亡,警方通過查閱死者的電腦和手機只怎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門袜瞬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人身堡,你說我怎么就攤上這事邓尤。” “怎么了贴谎?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵汞扎,是天一觀的道長。 經常有香客問我擅这,道長澈魄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任仲翎,我火速辦了婚禮痹扇,結果婚禮上,老公的妹妹穿的比我還像新娘谭确。我一直安慰自己帘营,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布逐哈。 她就那樣靜靜地躺著芬迄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昂秃。 梳的紋絲不亂的頭發(fā)上禀梳,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音肠骆,去河邊找鬼算途。 笑死,一個胖子當著我的面吹牛蚀腿,可吹牛的內容都是我干的嘴瓤。 我是一名探鬼主播扫外,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼廓脆!你這毒婦竟也來了筛谚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤停忿,失蹤者是張志新(化名)和其女友劉穎驾讲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體席赂,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡吮铭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颅停。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谓晌。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖便监,靈堂內的尸體忽然破棺而出扎谎,到底是詐尸還是另有隱情,我是刑警寧澤烧董,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布毁靶,位于F島的核電站,受9級特大地震影響逊移,放射性物質發(fā)生泄漏预吆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一胳泉、第九天 我趴在偏房一處隱蔽的房頂上張望拐叉。 院中可真熱鬧,春花似錦扇商、人聲如沸凤瘦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔬芥。三九已至,卻和暖如春控汉,著一層夾襖步出監(jiān)牢的瞬間笔诵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工姑子, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乎婿,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓街佑,卻偏偏與公主長得像谢翎,于是被迫代替她去往敵國和親捍靠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容