一、搭建开发环境

http://reactnative.cn/docs/0.46/getting-started.html#content

二、创建一个模板

运行以下命令,创建一个最新版本的 reactive-native 的环境。RN 的版本如下:

react-native init MyTestRnWithNative
react-native -v
react-native-cli: 2.0.1
react-native: 0.47.1

得到以下的工程目录。其中iOS文件夹中是 Native 的工程,index.ios.js 是用来生成 JS 代码的。

其中打开工程文件,可以看到在 Build Phases 有额外的一个步骤,是用来启动服务器的。

三、新建一个 Native 的工程

移除 ios 文件夹中所有文件,在 ios 文件夹中用 Xcode 新建一个 iOS 的工程,并把 Allow Arbitrary Loads 的值设为 YES,允许本地服务器访问。

四、链接 RN 的库到工程中

引入 RN 的库到工程中

如下图所示,把需要引入的库拖入工程的 Library Group里

我链接了如下几个库。其中 React 库位于 node_modules/react-native/React 文件夹中,其它 5 个库分别位于 node_modules/react-native/Libraries 文件夹下。

链接静态库

方法如下,把 6 个子工程的 Products 目录下的 .a 文件拖入工程的 Link Binary With Library 选项中。

设置头文件路径

Build SettingsHeader Search Paths 选项中,把工程的头文件设置正确。下面是设置完之后的截图。

五、设置启动 node 服务器的脚本

export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh

六、写入 Demo 代码

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h> //viewDidLoad
NSURL *jsCodeLocation; jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"Bananas"
initialProperties:nil
launchOptions:nil];
rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; rootView.frame = CGRectMake(100, 200, 200, 400);
[self.view addSubview:rootView];

七、解决若干问题

'React/RCTBundleURLProvider.h' file not found

如下所示,去掉 Prarllelize Build选项,新增一个 Target。

RCTWebSocket编译报错

打开工程中的RCTWebSocket.xcodeproj -> build settings > all -> Apple LLVM 8.0 - Custom Comple Flags -> 去掉 Other Warning Flags中-Werror -Wall 值后重新编译即可。

八、Run

参考

  1. 搭建开发环境
  2. Linking Libraries
  3. XCode升级到8.0后RCTWebSocket编译报错

把 Reative Native 47 版本集成到已有的 Native iOS 工程中的更多相关文章

  1. react native 之 在现有的iOS工程中集成react native

    在现有的iOS工程中集成react native, 或者说将react native引入到iOS 项目,是RN和iOS混合开发的必经之路 参考官网教程:https://reactnative.cn/d ...

  2. 集成 jpush-react-native 常见问题汇总 (iOS 篇)

    给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题 1. 收不到推送 确保是在真机上测试,而不是在 ...

  3. React-Native集成到已有项目中的总结

    安装Python 从官网下载并安装python 2.7.x(3.x版本不行) 安装node.js 从官网下载node.js的官方V6.X.X版本或更高版本.安装完成后检测是否安装成功:node -v ...

  4. React Native之支付集成(微信 支付宝)(ios android)

    React Native之支付集成(微信 支付宝)(ios android) 一,需求分析 1.1,app在线充值与提现 二,技术介绍与集成 2.1,微信支付 2.1.1,Android配置 详细配置 ...

  5. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例

    前提 Cordova Android 7.0.0开始改变了项目安卓平台的架构.新建一个空项目分别添加Android 6.4.0 和 Android 7.0.0平台: cordova platform ...

  6. 您的浏览器没有获得Java Virtual Machine(JVM)支持。可能由于没有安装JVM或者已安装但是没有启用。请安装JVM1.5或者以上版本,如果已安装则启用它。

    您的浏览器没有获得Java Virtual Machine(JVM)支持.可能由于没有安装JVM或者已安装但是没有启用.请安装JVM1.5或者以上版本,如果已安装则启用它. https://www.j ...

  7. iOS 国际本地化(对新项目集成和已有项目集成)

    第一推荐一篇金先生的博客,受益非浅,在这里真诚的感谢 https://www.jianshu.com/p/7cb0fad6d06f金小白 首先金小白先生把两种方式都做了介绍,第一种我就不在过多详细的讲 ...

  8. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  9. React Native是一套使用 React 构建 Native app 的编程框架

    React Native是一套使用 React 构建 Native app 的编程框架 React Native at first sight what is React Native? 跟据官方的描 ...

随机推荐

  1. oracle返回最大值一条记录

    虽然网上例子很多,但是试过多种办法都无效,原代码出处: https://blog.csdn.net/qyshibb/article/details/73332075 这个例子简单有效 select p ...

  2. for 续9

    -------siwuxie095                 for 拾遗:         一: for 语句里,do 后面一般会有括号,有括号就是复合语句, 假如需要用到括号里的变量,就需要 ...

  3. Golang基本结构之练习(day2)

    笔记: . 任何一个代码文件隶属于一个包 . import 关键字,引用其他包: import(“fmt”) import(“os”) 通常习惯写成: import ( “fmt” “os” ) . ...

  4. Linux命令:cp (copy)复制文件或目录

    复制文件,只有源文件较目的文件的修改时间新时,才复制文件     cp -u -v file1 file2 .将文件file1复制成文件file2     cp file1 file2 .采用交互方式 ...

  5. Windows c++程序的基本结构

    Windows c++程序的基本结构 1.一个完整的Windows应用程序通常由五种类型的文件组成 C语言源程序文件 头文件 模块定义文件 资源描述文件 项目文件 2.Windows应用程序构成基本框 ...

  6. Java Thread系列(二)线程状态

    Java Thread系列(二)线程状态 一.线程的五种状态 新建状态(New):新创建了一个线程对象,尚未启动. 就绪状态(Runnable):也叫可运行状态.线程对象创建后,其他线程调用了该对象的 ...

  7. Java 设计模式系列(二二)责任链模式

    Java 设计模式系列(二二)责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求 ...

  8. UI设计可供性解析:巧用隐藏的设计力提升用户体验

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 在实际的Web或App界面设计中,设计师们在学习和实践各种专业知识和技能之外,也会不可避免的遇到到各 ...

  9. Alpha阶段测试报告(示例)

    http://www.cnblogs.com/Flamenco/p/7834393.html Alpha阶段测试报告

  10. Android Studio真机测试

    本页内容 1.真机测试好处多 2.开始吧!真机测试 1.真机测试好处多 不久前才开我的Android Studio之旅,就遇上了一个大麻烦——创建的模拟器各种运行出错.尝试了各种解决方法,都没有什么结 ...