React-Native之链接原生库

随着React Native发布的所有库都在仓库中的Libraries文件夹下。其中有一些是纯Javascript代码,你只需要去require它们就可以使用了。另外有一些库基于一些原生代码实现,你必须把这些文件添加到你的应用,否则应用会在你使用这些库的时候产生报错。

(ps: 在用Xcode打开AwesomeProject.xcodeproj运行 报错'React/RCTBundleURLProvider.h' file not found 请将头文件<React/RCTBundleURLProvider.h> 和<React/RCTRootView.h>更换成"RCTBundleURLProvider.h" 和''RCTRootView.h'')

比如:

从github上面clone一个ReactNative项目,在运行的项目的时候发现RCTBundleURLProvider.h file not found。下面是解决方法:

添加包含原生代码的库需要几个步骤:

一、自动链接

第一步、

首先安装rnpm:

npm install rnpm -g

注意:rnpm需要node 4.1或更高版本。

第二步、

安装一个带原生依赖的库:

npm install 某个带有原生依赖的库 --save

注意:这一步中–save或–save-dev参数是非常重要的。rnpm需要根据package.json文件中的dependencies和devDependencies记录来链接库。

第三步、

链接原生依赖:

rnpm link

完成了!现在所有的原生依赖都成功地链接到你的iOS/Android项目了。

二、手动链接

第一步、

如果该库包含原生代码,那么在它的文件夹下一定有一个.xcodeproj文件。 把这个文件拖到你的XCode工程下(通常拖到XCode的Libraries分组里)

第二步、

点击你的主工程文件,选择Build Phases,然后把刚才所添加进去的.xcodeproj下的Products

文件夹中的静态库文件(.a文件),拖到Link Binary With Libraries组内。

第三步、

不是所有的库都需要进行这个步骤,你需要考虑的问题在于:

我需要在编译的期间了解库的内容吗?

这个问题的意思是,你是需要在原生代码中使用这个库,还是只需要通过JavaScript访问?如果你只需要通过JavaScript访问这个库,你就可以跳过这步了。

这一步骤对于我们随React Native发布的大部分库来说都不是必要的,但有两个例外是PushNotificationIOS

和LinkingIOS。以PushNotificationIOS为例,你需要在AppDelegate每收到一条推送通知之后,调用库中的一个方法。

这种情况下我们需要能够访问到库的头文件。为了能够顺利打包,你需要打开你的工程文件,选择Build Settings,然后搜索Header Search Paths,然后添加库所在的目录(如果它还有像React这样的子目录需要包含,注意要选中recursive选项)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,280评论 25 709
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,397评论 8 183
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 14,164评论 3 42
  • 《粉红牢房效应:绑架思维感觉和行为的9大潜在力量》 三种直接影响,甚至决定人们色,思所为的潜在力量。 1:有意思的...
    邓秋云阅读 5,707评论 0 2
  • 来上海第一天,就躺在这张床上,那时候心里还是有点忐忑与不安。经历了这十几天,认识了很多人,学到很多东西,明天即将回...
    FFFFanPei阅读 1,360评论 0 0

友情链接更多精彩内容