使用Cocoapods为现有iOS原生项目集成React Native

1、安装ReactNative环境

这一步可以参照 http://reactnative.cn/docs/0.36/getting-started.html#content

2、在现有的项目目录下运行 react-native init 目录名称

这里的目录名称在后面Cocoapods 链接时会用到。

3、使用Cocoapods管理项目

1. pod init

2. pod install

4、在Podfile 文件中添加

 pod 'React', :path => './Test/node_modules/react-native', :subspecs => [
  'Core',
  'RCTText',
  'RCTImage',
  'RCTActionSheet',
  'RCTGeolocation',
  'RCTNetwork',
  'RCTSettings',
  'RCTVibration',
  'RCTWebSocket',
  ]

其中的Test就是第二步中的目录名称。

5 、在你的项目的任意ViewController中添加以下代码

NSURL *jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios"];
RCTRootView * rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                         moduleName:@"Test"
                                                  initialProperties:nil
                                                      launchOptions:nil];

    [self.view addSubview:rootView];

其中的moduleName的值需要再 index.ios.js 中注册,类似
AppRegistry.registerComponent('Test', () => Test);

6、 在第二步中目录下面的node_modules目录下,运行 npm start

然后运行你的项目就可以看到下面的界面。


运行成功的页面.png

至此,就在原来的项目中添加了ReactNative模块。

可能遇到的问题。
如果报错 Native module cannot be null,那么就是Cocoapods中依赖的库没有添加完全。在上面的第四步中,已经加了需要使用的基本库,所以,应该不会报以下错误。

报错.png

因为你的服务是在电脑上启动的,所以可能会出现找不到服务器的错误,那么修改代码中的localhost为你电脑的IP地址即可,如果使用的是局域网地址,在真机上运行的话,那么你的手机应该和电脑处于同一个局域网内。

如果遇到以下错误:
[!] Unable to find a specification for yoga (= 0.54.2.React) depended upon by React/Core
根据提示需要添加yoga,所以在pod文件里添加pod 'yoga', :path => './Test/node_modules/react-native/ReactCommon/yoga'
然后再pod install 就OK了。

以下是博主的官方公众号和小程序,工作之余帮家乡的特产(巫溪牛肉干)做一下推广工作,欢迎关注!

感谢关注
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,328评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,180评论 25 709
  • 建iOS持续集成环境 持续集成: 转发于:使用Jenkins+Calabash+Cocoapods搭建iOS持续集...
    赵yx阅读 5,364评论 2 3
  • 12.30在过一天就是新的一年了,我也又老了一岁😄,也是我学iOS的第3天了,压力山大啊!老师出的题别人下手就会弄...
    住她心阅读 2,361评论 0 0
  • 小七8岁那年,还在田里割草,骑着牛在田里悠哉着。 村里的小伙伴飞快冲过田野,隔着树林对小七喊:“快回来给你姐开门呐...
    宁朴释阅读 2,563评论 4 1