iOS原生app集成RN

现在集成RN的越来越多,但是直接使用RN来搭建整个项目的并不是很多,大多数还是想在项目中的部分模块集成RN,比如首页的动态更新,换肤等等。昨天做了下原生app中集成RN的小例子,做下记录,以便日后查阅。

CocoaPods版本 1.0.1
react-native-cli版本1.0.0
node版本v4.2.2

1、搭建RN的开发环境,只要能让官网RN的demo跑起来就行
2、准备一个用于集成RN的app
3、在项目根目录创建package.json文件,内容如下

{
 "name": "项目名称", "version": "0.0.1", 
"private": true,
 "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start" }, 
"dependencies":
 { 
"react": "15.0.2",
 "react-native": "0.26.1"
 }
}

4、直接根目录(package.json所在目录)执行npm install,等待node_modules下载完成,会在在当前目录生成node_modules文件夹
5、添加Podfile文件,如果本来就有直接添加内容如下

//其中的path路径是相路径,根据自己的项目结构来定
//subspecs:是我们将要用的模块
target '项目名称' do
pod 'React', :path => './node_modules/react-native', :subspecs => [
 'Core',
 'RCTText',
 'RCTNetwork'(这里必须有)
 'RCTWebSocket', 
]
end

6、执行pod install
7、在项目根目录创建RN入口文件index.ios.js(iOS入口)建议使用web开发工具编辑,例如webstorm编辑入口js文件,

'use strict';

import React,{Component} from 'react';

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

var HomeViewController = require('./home.js');
class RNLession extends Component { 
   render() {
        return ( 
  <HomeViewController />        
      );    
   }
}
// Module name
AppRegistry.registerComponent('RNLession', () => RNLession);

//home.js(首页模块)

'use strict';

import React,{Component} from 'react';

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

class HomeViewController extends Component{
    render(){
        return( 
           <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: 'white'}}>
                <Text style={styles.TextStyle}>中秋快乐</Text>
            </View>
        );
    }
}

var styles = StyleSheet.create(
    { 
       TextStyle: 
       {
            justifyContent: 'center', alignItems: 'center', backgroundColor: 'white',fontSize:30,color:'blue'        }
    }
);

module.exports = HomeViewController;

7、添加允许使用http访问
App Transport Security Settings -> Allow Arbitrary Loads设置为YES

8、添加编译条件
Build Settings -> Linking -> Other Linker Flags
添加编译条件-lc++,否则报错如下:

Undefined symbols for architecture x86_64:
  "std::terminate()", referenced from:
      ___clang_call_terminate in libReact.a(RCTJSCExecutor.o)
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in libReact.a(RCTJSCExecutor.o)
  "___gxx_personality_v0", referenced from:
      -[RCTJavaScriptContext initWithJSContext:onThread:] in libReact.a(RCTJSCExecutor.o)
      -[RCTJavaScriptContext init] in libReact.a(RCTJSCExecutor.o)
      -[RCTJavaScriptContext invalidate] in libReact.a(RCTJSCExecutor.o)
      _RCTNSErrorFromJSError in libReact.a(RCTJSCExecutor.o)
      +[RCTJSCExecutor runRunLoopThread] in libReact.a(RCTJSCExecutor.o)
      -[RCTJSCExecutor init] in libReact.a(RCTJSCExecutor.o)
      -[RCTJSCExecutor context] in libReact.a(RCTJSCExecutor.o)
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

9、Native module cannot be null
查看在Podfile中是否存在'RCTNetwork',如果没有添加即可解决问题
(http://stackoverflow.com/questions/38629608/native-module-cannot-be-null)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容