原有iOS项目嵌入React-Native流程以及可能出现的问题

原有的iOS项目需要嵌入RN,然后就是各种搭环境 按照中文网的流程走基本不会有问题,下面就介绍下步骤,理想情况下走完就可以跑通了

一、嵌入流程

项目的目录结构

先把项目的结构说下

'index.js' : 这个是项目的入口文件,是必须要创建的。在0.49版本之前文件名是index.ios.js文件,之后的话与安卓共用一个入口文件
'app.js'   : 这个文件是我需要在index.js文件中需要用到的,非必须
'package.json' : 这个是安装依赖包的文件,是必须要创建的
'app.json' : 里面包含了项目的名称,非必须
'ios文件夹':把原生的项目全部放到这里,作为原生项目的根目录。如果是安卓的项目文件名就是'android'
'src文件夹':rn的相关js代码全部放这里,名称可以随意取,只要能找到js文件的路径即可。有一点需要注意的是这个目录只能在放这里,从外面引用进来的文件是跑不通的
'node_modules文件夹':根据'package.json'文件中的配置生成的依赖库
1、创建文件以及文件夹

请查看中文网,这里就不啰嗦了
将原有的项目全部放入ios文件夹中

2、执行命令生成依赖包文件

npm install

执行命令,耐心等待安装依赖包

3、引用依赖包

依赖包安装好之后,用添加文件的方式将需要的依赖包添加到项目中。耐心的将它们一个个的添加进来


导入依赖包
4、添加.a文件

targetbuild phases tab下找到Link Binary with Libraries添加.a文件

添加.a文件

5、总结

走完第4步,讲道理运行代码就可以跑通了,然后在原生项目以及scr文件中书写代码了。
如果碰到了不讲道理的事情,就看下面的问题,有可能会帮助到,反正我是被折磨了···

二、可能会遇到的问题以及可能有效的解决方法

1、找不到库文件的情况
`React/RCTBridgeModule.h` file not found

现在一看到这个错误就头疼,明明在本地上已经存在,也导入到项目中了,偏偏就说找不到
可能的解决方案:哪个依赖库找不到就执行第2步看反馈貌似可行性很高

1. Clean (cmd+shift+K)
2. Build core React - select React as the scheme in Xcode and build it (cmd+B)
3. Build the library that is failing (e.g. RCTText).
4. Build your app.

下面是找到的一些解决方法,我这边试了下都不OK
| https://stackoverflow.com/questions/41663002/react-rctbridgemodule-h-file-not-found
| https://stackoverflow.com/questions/40368211/rctbundleurlprovider-h-file-not-found-appdelegate-m
| https://stackoverflow.com/questions/30133459/undefined-symbols-for-architecture-x86-64-after-adding-an-extension-target-to-a
| https://github.com/facebook/react-native/issues/12265

2、重复引用
24 duplicate symbols for architecture x86_64

如果发现库有重复引用的情况,建议是删掉流程中的第4点引入的.a文件,再重新导入一次

3、总结

很奇怪的就是,有些RN报错是看运气的,出现错误也不知道怎么下手去排查,只能一个个去试,估计是入行还不深
有问题可以先去官方的Github上找找 Github项目地址

祝好运