需求:
最近準備在公司項目中使用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可以找一下唐巧寫的安裝教程)
- 創(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依賴就不能運行爆土。
-
依賴文件安裝 進入工程目錄椭懊,執(zhí)行
$ pod install
,就完成了react-native工程包的集成雾消。 -
打開React-iOS.xcworkspace Cocoapods安裝成功之后灾搏,工程目錄會產生一個React-iOS.xcworkspace
的工程文件,我們使用Xcode打開這個工程打開這個工程文件立润。
-
不使用Cocoapods狂窑,手動集成
1.安裝react-native
我們在React-iOS項目目錄建一個reactnative目錄,用于存放我們的react-native相關文件桑腮,再創(chuàng)建一個package.json文件泉哈,用于初始化react-native。
//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
-
將所有.a文件選中并添加
-
添加搜索頭文件的地址
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
解決方法:
在
React-iOS -> TARGETS -> React-iOS -> Build Phases -> Link Binary Width Libraries
中導入libz.1.1.3.tbd,libstdc++.tbd
兩個文件
結語:
通過上面的步驟蔚晨,就可以將React-Native項目集成到原有的項目中了,我將在下一篇文章中告訴大家如何運行項目中的RN頁面,還有RN跳轉到原生頁面的方法铭腕。