React-Native / iOS 混編入原生項目

一臉懵逼:吐槽前言

后面慢慢吐槽

感謝前人分享經(jīng)驗系列 :React-Native 資料

React-Native中文網(wǎng)

iOS 和 Android 開發(fā)的 React Native 入門指南

iOSer邁向前端一小步--OC/Swift與RN混編Demo (這里面有OC\RN混編的項目搭建Demo)

(后面如有用到有用的繼續(xù)補充)

環(huán)境配置與項目搭建

環(huán)境配置與純RN搭建看這個就行了

iOS中 RN與OC項目混編 (兩個關(guān)鍵文件配置)
  • package.json
  • Podfile

package.json

{
  "name": "RNProjectName",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },
  "dependencies": {
    "react": "15.4.2",
    "react-native": "0.41.2"
  }
}
name    項目名稱
version     版本(遵守‘大版本.次要版本.小版本’的格式)

package.json詳解

// 終端中
?  app-iv3 git:(dev_2.7.2_Dombo_RN) ? ls
INTERNATIONAL_README laoyuegou            package-lock.json
README               node_modules         package.json

?  app-iv3 git:(dev_2.7.2_Dombo_RN) ? npm install
cd 到 package.json 所在的文件目錄下
npm install 

安裝完成后會有一個 node_modules 文件夾


Podfile

#  ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ====== ======
        pod 'React', :path => ‘../node_modules/react-native', :subspecs => [
        'Core',
        'RCTImage',
        'RCTNetwork',
        'RCTText',
        'RCTWebSocket',
        ]
# 根據(jù)需求添加項目中需要的模塊
# path 這里要正確設(shè)置 node_modules/react-native 的所在路徑吸重,每個人不一樣

配置完后歪今,pod install 即可安裝 React-Native 所以來的相關(guān)組件庫

React-Native 咋用呢

// 倒入頭文件
#import <React/RCTRootView.h>

// 
NSURL *jsCodeLocation = [NSURL
                             URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios"];
                             
// 傳給RN的參數(shù)必須是字典類型嚎幸,要和js代碼propertis一致
NSDictionary *params = @{@"scores" : @[
                                     @{@"name" : @"Alex",
                                         @"value": @"42"},
                                     @{@"name" : @"Joel",
                                         @"value": @"10"}
                                     ]
                             };
    // moduleName 要對應(yīng)index.ios.js 上的 AppRegistry module
RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL : jsCodeLocation
                                                 moduleName        : @"RNTestViewModule"
                                                 initialProperties : params
                                                  launchOptions    : nil];
                                                
// 去掉返回箭頭的title
UIBarButtonItem *item = [[UIBarButtonItem alloc] init];
item.title = @"";
self.navigationItem.backBarButtonItem = item;
       
UIViewController *viewController = [UIViewController new];
viewController.view = rootView;
viewController.title = @"承載RN視圖的VC";
[self.navigationController pushViewController:viewController animated:YES];

React-Native 0.45.0 以上版本需要下載boost等幾個第三方庫編譯(是需要終端fan qiang的寄猩,否則超時失敗)

  • package.json
  • Podfile

package.json

{
  "name": "RNProjectName",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start"
  },
  "dependencies": {
    "react": "16.4.1",
    "react-native": "0.56.0"
  }
}

Podfile.json

# Uncomment the next line to define a global platform for your project
react_native_path = './Extern/ReactNative/node_modules/react-native'

platform :ios, '9.0'
inhibit_all_warnings!

target 'RNProject' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

    # 'node_modules'目錄一般位于根目錄中
    # 但是如果你的結(jié)構(gòu)不同,那你就要根據(jù)實際路徑修改下面的`:path`
    pod 'React', :path => react_native_path, :subspecs => [
    'Core',
    #'BatchedBridge', # 0.45 版本以后需要添加
    'CxxBridge',
    'DevSupport', # 如果RN版本 >= 0.43替废,則需要加入此行才能開啟開發(fā)者菜單
    'RCTText',
    'RCTImage',
    'RCTNetwork',
    'RCTWebSocket', # 這個模塊是用于調(diào)試功能的
    # 在這里繼續(xù)添加你所需要的模塊
    ]
    # 如果你的RN版本 >= 0.42.0,則加入下面這行
    pod 'yoga', :path => react_native_path + '/ReactCommon/yoga'
    # Third party deps
    pod 'DoubleConversion', :podspec => react_native_path + '/third-party-podspecs/DoubleConversion.podspec'
    pod 'glog', :podspec => react_native_path + '/third-party-podspecs/glog.podspec'
    pod 'Folly', :podspec => react_native_path + '/third-party-podspecs/Folly.podspec'
end

剩下步驟跟part1 中的一樣不再描述


運行

終端cd 到 package.json 文件下

如果是adb斷了就使用一下步驟

  1. adb reverse tcp:8081 tcp:8081
  2. npm start
    如果adb沒斷,直接
  3. npm start

RN報錯與解決方案:
1椎镣、Argument list too long: recursive header expansion failed at
解決:查到的一些方法太好使,'node_modules'目錄一般放于根目錄中衣陶,不要放太深層的路徑即可

2018-7-24更新,后續(xù)再補


IDE:Visual Studio Code

Visual studio Code 寫RN所需要的插件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剪况,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子译断,更是在濱河造成了極大的恐慌,老刑警劉巖孙咪,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪唐,死亡現(xiàn)場離奇詭異翎蹈,居然都是意外死亡淮菠,警方通過查閱死者的電腦和手機荤堪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澄阳,“玉大人拥知,你說我怎么就攤上這事碎赢〉吞蓿” “怎么了肮塞?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長峦嗤。 經(jīng)常有香客問我蕊唐,道長烁设,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任装黑,我火速辦了婚禮副瀑,結(jié)果婚禮上恋谭,老公的妹妹穿的比我還像新娘糠睡。我一直安慰自己疚颊,他們只是感情好狈孔,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布材义。 她就那樣靜靜地躺著均抽,像睡著了一般其掂。 火紅的嫁衣襯著肌膚如雪油挥。 梳的紋絲不亂的頭發(fā)上款熬,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音贤牛,去河邊找鬼惋鹅。 笑死殉簸,一個胖子當(dāng)著我的面吹牛负饲,可吹牛的內(nèi)容都是我干的喂链。 我是一名探鬼主播返十,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼椭微,長吁一口氣:“原來是場噩夢啊……” “哼洞坑!你這毒婦竟也來了蝇率?” 一聲冷哼從身側(cè)響起迟杂,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤本慕,失蹤者是張志新(化名)和其女友劉穎排拷,沒想到半個月后锅尘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體监氢,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年纵揍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片议街。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖特漩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涂身,我是刑警寧澤雄卷,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布访得,位于F島的核電站龙亲,受9級特大地震影響悍抑,放射性物質(zhì)發(fā)生泄漏鳄炉。R本人自食惡果不足惜搜骡,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一拂盯、第九天 我趴在偏房一處隱蔽的房頂上張望记靡。 院中可真熱鬧谈竿,春花似錦摸吠、人聲如沸空凸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啼止。三九已至道逗,卻和暖如春献烦,著一層夾襖步出監(jiān)牢的瞬間滓窍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工吏夯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留此蜈,地道東北人锦亦。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓舶替,卻偏偏與公主長得像杠园,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子舔庶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348

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